2012-01-26 53 views
0

我的系统:XP + python27 编解码器, XP GBK;蟒蛇27 ASCII如何让我的角色?

>>> a = '你好'  
>>> a 
'\xc4\xe3\xba\xc3' 
>>> print a 
你好 
>>> '\xc4\xe3\xba\xc3'.decode('gbk') 
u'\u4f60\u597d' 
>>> '\xc4\xe3\xba\xc3'.encode('gbk') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal 
not in range(128) 

我怎样才能得到 “你好” 从 '\ XC4 \ XE3 \ XBA \ XC3'?

+0

你能在扩展question.language等? – Damien

回答

0

您的Python shell无法打印gbk编码的字符串。它在那里,你无法打印它。

+0

+1。 OP应该尝试打印为UTF-8。 –

6

这工作,因为你解码字节到Unicode:

'\xc4\xe3\xba\xc3'.decode('gbk') 

这不,因为你想编码字节(这已经被编码):

'\xc4\xe3\xba\xc3'.encode('gbk') 

Python 2中的错误消息在这里没有帮助,但是您应该只使用unicode字符串上的编码:

u'\u4f60\u597d'.encode('gbk') # Gets you back the bytes you had before. 

在Python 2中,只要在交互式提示符下执行a,就会在转义字符串中显示非ascii字符(如\xc3\u4f60)。你可以做print a来显示字符。或者使用Python 3,它将显示包括unicode字符的字符串。

+0

我无法得到你好! – user1142618

+2

@ user1142618:我认为你应该从阅读这篇文章开始:http://www.joelonsoftware.com/articles/Unicode.html –

0

他指编码进行打印时,不显示需要

>>> a = u'\u4f60\u597d'.encode('gbk') 
>>> print a 
��� 
>>> a 
'\xc4\xe3\xba\xc3' 

但是如果指定:

>>> a = '\xe4\xbd\xa0\xe5\xa5\xbd' 
>>> print a 
你好 

你应该使用:

>>> c = '\xe4\xbd\xa0\xe5\xa5\xbd'.decode('gbk') 
>>> c 
u'\u6d63\u72b2\u30bd' 
>>> c = c.encode('gbk') 
>>> print c 
你好 
相关问题