无法在Python中将ASCII转换为UTF-8

1 投票
4 回答
52825 浏览
提问于 2025-04-16 13:43

我有一个波兰语单词“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─ů┼╝

撰写回答