我试图从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
。我不知道我可以做什么来简单地显示和传递这个任何其他正常角色。