SSIDが発音区別記号を含むWiFiネットワークに接続できない

SSIDが発音区別記号を含むWiFiネットワークに接続できない

私の現在のWiFiネットワーク(Windows -.-の助けを借りてこの記事を書いています)のSSIDには「ö」というウムラウトがあります。

SSIDを変更できない場合は、そのネットワークにどのように接続しますか?

Ubuntu 12.04、Android 2.3.6、またはAndroid 4.0では機能しないため、一般的なLinuxの問題のようです。ネットワークアダプタは「Broadcom 4313」です。

問題はネットワークのようです。隠された。 AndroidとUbuntuの両方が手動で入力したSSID文字列を正しく解釈しません。ただし、ネットワークが非表示にならない場合、両方のシステムがネットワークを表示できます。 UbuntuはSSID名を正しく認識しますが、Androidはウムラウト "ö"で失敗し、次の2文字もありません。したがって、「[一部文字]örc[一部ギター文字]」が表示されるのではなく、「[一部文字][一部ギター文字が表示されます。」]。

したがって、隠しSSIDと特殊文字SSIDを組み合わせると問題が発生します。

ベストアンサー1

エンコーディングに関連しているようです。 ~によるとこの回答、SSIDは(現在の)明示的なUTF-8またはUNSPECIFIEDエンコーディングを持つことができますが、「SSIDEncoding」フィールドは最新の標準の一部です。おそらく、これより古い機器を使用するネットワークでは、実際には「指定されていません」です。

人が入力したテキストに基づいてSSIDを設定することは、すべてASCIIまたはUTF-8形式で実行されると思います。ただし、SSIDEncoding フィールドを指定する標準は 2012 年から出てきたように見えるため、以前はどのエンコーディングも使用できました (指定しないと、まだエンコードを使用できます)。したがって、それを別の形式に設定するいくつかのソフトウェアがあるかもしれません。たとえば、ASCIIを使用しているが文字列に奇数文字が含まれている場合は、UTF-16を使用します。 JavaとWindowsの両方が内部的にUTF-16を使用していると思います。

ルータはほとんど確実にSSIDを一連のバイトとして認識し、デフォルトのエンコーディングにまったく気にしないため、SSIDを設定するときに渡されるすべてを許可します。これを確認するには、ブロードキャストされたバイトの実際のシーケンスを調べる必要があります。

ネットワークが非表示にならない場合、両方のシステムがネットワークを表示できます。

UTF-16 文字列属性が認識されるため、非表示にしないと、SSID は表示のためにローカルエンコーディングに変換されます。ただし、手動で入力しようとすると、システムは放送にどのエンコーディングを使用するかを知りません。元に設定したソフトウェアの方法と一致する場合にのみ機能します。新しいSSIDEncodingフィールドには、この問題を解決する可能性がありますが、A)指定されていない脆弱性も許容し、B)以前のデバイスでは問題になりません。 LinuxとAndroidは通常UTF-8を使用しているため、SSIDが実際にUTF-16文字列の場合は画面上で同じように見えますが、手動で入力して検索すると一致しない可能性があります。

おすすめ記事