无法在python中将ascii转换为utf-8

时间:2011-03-15 12:55:19

标签: python encoding

我有波兰语“wąż”,意思是“蛇”

但我是从ascii的webservice获得的,所以:

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)

我正在使用Wing Ide,在Windows Xp上使用波兰文化。

在文件顶部我有:

# -*- coding: utf-8 -*-

我无法找到解决问题的方法。为什么我不能在输出中得到“wąż”?

4 个答案:

答案 0 :(得分: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─ů┼╝

答案 1 :(得分:5)

>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
wąż

答案 2 :(得分:0)

示例:

snake_in_polish_in_ascii = 'w\xc4\x85\xc5\xbc'
print snake_in_polish_in_ascii.decode('cp1252').encode('utf-8')

答案 3 :(得分:0)

默认情况下,尽管python标准库仅使用ASCII,但python源文件仍被视为以UTF8编码