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) <= 32)
      {
        memcpy(ssid, bss_link->ssid, strlen(bss_link->ssid));
      }
      else
      {
        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编码后传输

 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值