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

标签 android wifi android-wifi wifimanager

我有一个 Wi-Fi AP,其 SSID 是一串 unicode 字符(例如:“??”),我希望 Android 设备连接到它。当我的设备(Nexus One)检测到热点时,SSID 看起来像这样:“”并且无法识别它。知道如何解决这个问题吗?

最佳答案

<罢工> 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,所以我之前的答案无效。

关于android - 为什么我在 Android 上无法检测到带有 unicode 字符的 wifi SSID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831055/

相关文章:

java - 如何在应用程序( Activity )仍在运行时刷新它?

android - 如何从 Android 设备连接到 wifi 打印机?

Android - 如何获得 wifi SNR(信噪比)?

android - 如何在没有用户交互的情况下在 Android 上以编程方式安装 CA 证书

iphone - 运行我的应用程序一段时间后,WiFi在iPod中掉线

linux - 包括/配置/auto.conf.cmd : No such file or directory [Kali Linux]

android - 如果文件存在,如何在 DriveAPI 覆盖中创建文件?

Android - 保存数据的安全性

Android:用于访问和/或备份系统设置的 API

iphone - 如何创建与iPhone/iPad App交互的Mac/PC服务器应用程序?