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

use*_*618 1 python encoding

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

但是我从ascii的webservice中得到它,所以:

snake_in_polish_in_ascii="w\xc4\x85\xc5\xbc"
Run Code Online (Sandbox Code Playgroud)

有我的尝试结果:

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
Run Code Online (Sandbox Code Playgroud)

而这段代码:

print  str(snake_in_polish_in_ascii.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

引发异常:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

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

在文件顶部我有:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

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

mou*_*uad 8

这个表达式:

snake_in_polish_in_ascii.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

不要改变字符串就像这样:

print snake_in_polish_in_ascii.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

关于为什么当你print snake_in_polish_in_ascii看到w????的原因是因为你的终端使用cp852编码(中欧和东欧)尝试这样看:

>>> print snake_in_polish_in_ascii.decode("cp852")
w????
Run Code Online (Sandbox Code Playgroud)


Vla*_*hev 5

>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
w??
Run Code Online (Sandbox Code Playgroud)