为什么我无法在Android上检测到带有unicode字符的wifi SSID?

时间:2012-03-22 21:47:01

标签: android wifi android-wifi wifimanager

我有一个带有SSID的wifi AP,它是一串unicode字符(例如:“ԱԲԳԴԵԶԷԸԹԺԻԼ”),我想让我的Android设备连接到。当我的设备(Nexus One)检测到热点时,SSID看起来像这样:“܍܍܍܍܍܍܍܍”并且无法识别它。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

我写了一个应用程序“WiFi连接管理器”来解决这个问题。但是,我不了解任何亚美尼亚语,因此结果可能无法正确显示。即使我的应用程序错误地显示了名称,您仍然可以连接到接入点。

您可以在Android Market

中找到它

或者你可以download it here

答案 1 :(得分:2)

<击> 802.11数据包中的SSID字段有32个字节。我相信Android设备(以及其他设备)选择将每个字节解释为单个字符(这可能也是802.11标准的一部分)。这就是SSID限制为32个字符的原因。

现在因为我们只用一个字节来表示每个字符,所以我们只有8位可以使用。使用二进制补码系统(可能使用),我们可以表示的最高数字是127(2 ^(8-1))。

标准ASCII字符可以用单个字节表示,每个字节对应于0到127之间的十进制值。另一方面,Unicode字符需要1到4个字节来表示。因此,如果修改802.11规范以在SSID字段中包含4字节Unicode字符,则您只能在SSID中使用最多8个字符。我想在某个地方,有人决定从较小的游泳池中选择32个字符,从较大的游泳池中搜索超过8个字符。

您可以通过在设备上编写自定义驱动程序来解决这个问题,将32字节SSID字段解释为Unicode字符,但我不推荐它。

如评论中所述,Unicode字符可以编码为UTF-8,因此我之前的答案无效。