web-dev-qa-db-ja.com

分音記号を含むSSIDでwifiネットワークに接続できません

私の現在のWiFiネットワーク(そして私はWindowsの助けを借りてこれを書いています-.-)はそのSSIDに発音区別符号があります: "ö"。

SSIDを変更することができない場合、そのようなネットワークに接続するにはどうすればよいですか?

これはUbuntu12.04またはAndroid 2.3.6またはAndroid 4.0では機能しないため、一般的なLinuxの問題だと思います。ネットワークアダプターは「Broadcom 4313 "。

問題は、ネットワークがhiddenであるということのようです。両方のAndroidとUbuntuは、手動で入力されたSSID文字列を正しく解釈できません。ただし、ネットワークが非表示になっていない場合は、両方のシステムがネットワークを認識できます。UbuntuはSSID名を正しく認識しますAndroidダイアクリティック「ö」で失敗し、次の2文字も欠落します(したがって、「[一部の文字]örc[その他の文字]」の代わりに「[一部の文字] [その他の文字]」が表示されます)。

したがって、問題の原因は非表示のSSIDと特殊文字SSIDの組み合わせです。

6
stefan

これはエンコーディングに関係していると思います。 この回答 によると、SSIDには(現在)明示的なUTF-8またはUNSPECIFIEDエンコーディングが含まれている可能性がありますが、「SSIDEncoding」フィールドは新しい標準の一部です。おそらく、これより古い機器を備えたネットワークでは、事実上「不特定」です。

人間が入力したテキストからSSIDを設定するものはすべて、ASCIIまたはUTF-8)で行うと思います。ただし、SSIDEncodingフィールドを指定する標準は2012年のものと思われるため、それ以前は、任意のエンコーディングを使用できました(そして、UNSPECIFIEDとして、任意のエンコーディングを引き続き使用できました)。したがって、他の場所にそれらを設定するソフトウェアがどこかにある可能性があります。たとえば、ASCIIただし、文字列に奇数文字が含まれている場合はUTF-16にフォールバックします。JavaそしてWindowsはどちらも内部でUTF-16を使用していると思います。

ルーターはほぼ確実にSSIDをバイトのシーケンスと見なし、潜在的なエンコードをまったく気にしないため、SSIDが設定されたときに渡されたものはすべて受け入れます。これを判断するには、実際のバイトシーケンスをブロードキャストとして確認する必要があります。

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

UTF-16文字列が何であるかを認識することができるため、非表示になっていない場合は、それが発生し、SSIDが表示用にローカルエンコーディングに変換される可能性があります。ただし、手動で入力しようとすると、システムはブロードキャストで使用するエンコーディングを認識できません。それが最初にそれを設定したソフトウェアの方法論と一致する場合にのみ機能します。新しいSSIDEncodingフィールドはこれを解決する可能性がありますが、A)UNSPECIFIEDの抜け穴も許容し、B)古い機器は気にしません。 LinuxとAndroidは通常UTF-8を使用するため、SSIDが実際にUTF-16文字列である場合、画面上では同じように見える可能性がありますが、手動で入力して検索すると一致しません。にとって。

3
goldilocks

私の提案はばかげているかもしれませんが、システムで$ setxkbmap -layout deまたはグラフィカルツールを使用してドイツ語のキーボードレイアウトを設定し、SSIDを入力することができますか?

0
Boris Burkov

Androidの問題については、私と他の人がこのAndroid app: https://play.google.com/store /apps/details?id=com.roamingsoft.manager

0
Tim

このWiFiネットワークのQRコードを作成 そしてそれを使用してAndroidでネットワークをセットアップするとどうなるか知りたいです。 Androidデバイスを持っていませんが、Androidはこの方法でWiFiをセットアップすることをサポートしており、エンコードの問題を回避できると聞いています。

0
Old Pro

wpa_supplicant.confに手動入力を追加するのはどうですか? 'umlaut'を含むSSIDの場合、16進数でssid-entryを追加するだけです。

SSID=$(echo 'SSID' | xxd -u -p)

network={
    priority=1
    ssid=$SSID
    mode=0
    key_mgmt=WPA-PSK
    psk="PASSWORD"
}

confファイルでvarを使用しないでください。ターミナルから取得し、引用符なしで16進数を書き留めます。

0
xx4h