ESP8266扫描中文名称wifi问题 |
您所在的位置:网站首页 › 电脑怎么搜索中文wifi › ESP8266扫描中文名称wifi问题 |
近期因为一个项目需要处理esp8266连接中文名称wifi的情况,才发现8266不能直接连接中文WiFi的问题。 具体场景:在代码中配置ssid与pwd,其中ssid为中文,通过设置手机热点为同名AP,测试连接 中文名称的wifi。 现象:串口调试信息显示,一直未能发现该中文WiFi 猜测:8266扫描到的ssid编码和我配置的ssid编码方式不一样,因此不能匹配 验证:先扫描出附近的AP,将其SSID每一个字节打印出来,在将配置的SSID每一个字节打印即可验证
代码: wifi_set_opmode_current(STATION_MODE); xTaskCreate(wifi_test_scan, "wifi_test_check_ip", 600, NULL, 2, &xWifitestTaskHandle);
static void ICACHE_FLASH_ATTR wifi_test_scan(void *arg) { struct ip_info ipConfig; log_info("wifi_test_scan."); for(;;) { bool Loflag =wifi_station_scan(NULL, myscan_done); if(Loflag == true){ log_info("@@@@@success"); }else if(Loflag == false){ log_info("@@@@@false"); } vTaskDelay(6000 / portTICK_RATE_MS);//delay 1s } } void ICACHE_FLASH_ATTR myscan_done(void *arg, STATUS status) { uint8 ssid[33]; char temp[128]; log_info("$$$$enter scan_done####"); if (status == OK) { struct bss_info *bss_link = (struct bss_info *)arg; while (bss_link != NULL) { memset(ssid, 0, 33); if (strlen(bss_link->ssid) memcpy(ssid, bss_link->ssid, 32); } printf("(%d,\"%s\",%d,\""MACSTR"\",%d)\r\n", bss_link->authmode, ssid, bss_link->rssi, MAC2STR(bss_link->bssid),bss_link->channel); log_info("@@@@the ssid'len is:%d",strlen(ssid)); int i = 0; for(i = 0; i < strlen(ssid);i++){ log_info("@@@@the ssid No.%d ascci is:%d",i,ssid[i]); } bss_link = bss_link->next.stqe_next; } } else { printf("scan fail !!!\r\n"); } } 串口调试图: 我设置的手机热点名称为: 张 串口打印显示,张字编码为三个字节,三个字节的ASCCI码为:229、188、160,对应显示为 e5 bc a0 通过查验汉字编码的可能的编码结果,得到这是URL编码的变形, URL编码下,张 字的编码为:%e5%bc%a0 而url编码被用在http传输中,我是用AP热点配网时,通过客户端浏览器提交到esp8266上server的中文形式就是经过URL编码的,因此二者可以配合使用 使用8266作为AP进行热点配网时候,在html中的中文是通过UTF8编码后传输
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |