我有一个 SSID 的 wifi AP,它是我希望我的 Android 设备连接到的一串 unicode 字符(例如:“ԱԲԳԴԵԶԷԸԹԺԻԼ”)。当我的设备 (Nexus One) 检测到热点时,SSID 看起来像这样:" 知道如何解决这个问题吗?
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,因此我之前的回答无效。
我写了一个应用程序“WiFi 连接管理器”来解决这个问题。但是,我不懂任何亚美尼亚语,因此结果可能无法正确显示。即使名称在我的应用程序中显示不正确,您仍然可以连接到接入点。
您可以在Android Market中找到它。
或者你可以在这里下载。