Python使用ssids,utf-8和unicode

时间:2018-04-12 17:26:47

标签: python unicode encoding utf-8 wifi

我试图从python中读取可用的wifi连接列表。我使用以下代码来执行此操作:

ps = subprocess.Popen(('sudo', 'iwlist', 'wlan0', 'scan'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'ESSID'), stdin=ps.stdout)
ssids = filter(None, sorted(dict.fromkeys(re.findall('"([^"]*)"', output))))

这会生成一个可用的ssids列表。大。但如果我有一个带有叛教者的ssid,我会得到类似的东西:

  

Ryan \ xe2 \ x80 \ x99s iPhone

很酷..如果我在每个ssids上运行str.decode('string_escape'),我可以在我的网络应用上正确显示的唯一方法就是这样。然后它看起来像:

  

Ryan的iPhone

但是......当我尝试将该值写入wpa_supplicant.conf时,我得到:

  

UnicodeEncodeError:' ascii'编解码器不能编码字符u' \ u2019'在   位置...

好的......所以我尝试在提交之前对其进行utf-8编码,我收到此错误:

  

UnicodeDecodeError:' ascii'编解码器不能解码字节0x32   位置...

我最初尝试使用utf-8对ssids进行编码(而不是使用decode('string_escape'),但该角色仍会显示并传递给\xe2\x80\x99。我不知道我可以做什么来简单地显示和传递这个任何其他正常角色。

0 个答案:

没有答案