我正在使用Ubuntu和python 3.4从维基百科的api下载数据。我正在保存名称,我看到不同语言的字符未正确保存。
例如:日の火曜日保存为æ¥ã®ç«ææ¥。
我想我可能不会在utf-8中保存它所以我将代码更改为
fd = io.open("filename",'w',encoding='utf8')
fd.write(str(name.encode('utf-8'), 'utf-8'))
但我仍然得到相同的结果。
我使用的api是here。
我对此的理解是,utf-8应该能够处理所有语言的文本。此外,Ubuntu中的控制台默认使用utf-8,如果我运行more
之类的命令,它应该正确打印出字符串。
答案 0 :(得分:0)
检查响应代码,从响应中获取charset并使用它进行解码。您可以使用name.decode('utf-8')
或str(name, 'utf-8')
进行解码。
F.e。
resp = urlopen(url)
if resp.code == 200:
with open('filename', 'w') as fd:
fd.write(str(name, resp.info().get_content_charset()))
#or fd.write(name.decode(resp.info().get_content_charset()))
答案 1 :(得分:0)
问题是我的ssh客户端,它显示错误的字符串。代码工作正常。