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

2024-04-24 04:13:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有波兰语单词“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ąż”的输出?


Tags: inwebserviceasciithis单词printsutf
3条回答

这个表达式:

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─ů┼╝
>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
wąż

示例:

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

相关问题 更多 >