无法在Python中将ASCII转换为UTF-8
我有一个波兰语单词“wąż”,意思是“蛇”。
但是我从网络服务中获取到的却是ASCII格式,所以:
snake_in_polish_in_ascii="w\xc4\x85\xc5\xbc"
这是我尝试的结果:
print str(snake_in_polish_in_ascii) #this prints me w─ů┼╝
snake_in_polish_in_ascii.decode('utf-8')
print str(snake_in_polish_in_ascii) #this prints me w─ů┼╝ too
还有这段代码:
print str(snake_in_polish_in_ascii.encode('utf-8'))
这段代码会引发异常:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
我在Windows XP上使用Wing Ide,并且设置为波兰文化。
在文件的顶部,我有:
# -*- coding: utf-8 -*-
我找不到解决办法。为什么我无法在输出中得到“wąż”?
4 个回答
0
示例:
snake_in_polish_in_ascii = 'w\xc4\x85\xc5\xbc'
print snake_in_polish_in_ascii.decode('cp1252').encode('utf-8')
5
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某些功能没有按预期工作。这种情况下,很多人会去StackOverflow这样的论坛寻求帮助。
在这些论坛上,用户会描述他们遇到的问题,并提供一些相关的代码片段。其他用户则会根据这些信息给出建议或解决方案。这样的交流可以帮助大家更快地解决问题,学习到新的知识。
总之,StackOverflow是一个很好的地方,可以让程序员们互相帮助,分享经验,解决编程中的各种难题。
>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
wąż
8
这个表达式:
snake_in_polish_in_ascii.decode('utf-8')
不会直接修改字符串,试试这样做:
print snake_in_polish_in_ascii.decode('utf-8')
至于为什么当你执行 print snake_in_polish_in_ascii
时看到 w─ů┼╝
,是因为你的终端使用的是 cp852 编码(适用于中东欧地区)。你可以试试这样来查看:
>>> print snake_in_polish_in_ascii.decode("cp852")
w─ů┼╝