[d]python上print出来中文都是16进制该怎么处理

[d]python下print出来中文都是16进制该怎么办
本帖最后由 fibbery 于 2012-10-13 11:56:52 编辑

# coding=gbk
key=u'成語' #这样print是可以的。
for each in name:
            #print each#.decode('gbk')
             print each    #这个是从网页上获取的中文,然后print,但是输出的都是16进制,
#试过print each#.decode('gbk')和print unnicode(each,'utf-8')都不可以,我该怎么办

['\xe2\x80\xaa\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\xe2\x80\xac', 'lizhlin', 'ck20110701', '\xe2\x80\xaaNorsk\xe2\x80\xac', 'MedHelp', '\xe2\x80\xaaAfrikaans\xe2\x80\xac', ' ', '\xe6\x9b\xb4\xe5\xa4\x9a', 'NorthPark', '\xe2\x80\xaaFilipino\xe2\x80\xac', '\xe2\x80\xaaBahasa Melayu\xe2\x80\xac', '\xe2\x80\xaaSuomi\xe2\x80\xac', 'Noom Inc.', '\xe2\x80\xaaSloven\xc5\xa1\xc4\x8dina\xe2\x80\xac', '\xe5\x85\x91\xe6\x8d\xa2', '\xe8\xb4\xad\xe4\xb9\xb0Android \xe5\xba\x94\xe7\x94\xa8', 'brianwork', '\xe6\x99\xba\xe5\x95\x86\xe6\xb5\x8b\xe8\xaf\x95', 'Noom CardioTrainer', '\xe7\x8e\x89\xe6\x88\xbf\xe7\xa7\x98\xe8\xaf\x80', '\xe8\xb4\xad\xe7\x89\xa9', '\xe6\x96\xb0\xe9\x97\xbb', '\xe6\x88\x91\xe7\x9a\x84\xe8\xb6\xb3\xe8\xb7\xa1', '\xe5\x81\x9a\xe7\x88\xb1\xe5\xa7\xbf\xe5\x8a\xbf', 'ChenGangQiang', '\xe6\xaf\x8f\xe6\x97\xa5\xe8\x85\xb9\xe9\x83\xa8\xe9\x94\xbb\xe7\x82\xbc\xe5\x85\x8d\xe8\xb4\xb9\xe7\x89\x88', '\xe2\x80\xaa\xe1\x8a\xa0\xe1\x88\x9b\xe1\x88\xad\xe1\x8a\x9b\xe2\x80\xac', '\xe7\xbd\x91\xe7\xab\x99\xe6\x9c\x8d\xe5\x8a\xa1\xe6\x9d\xa1\xe6\xac\xbe', 'Gmail', '\xe5\xae\x89\xe8\xa3\x85', 'longlong', '\xe8\xae\xbe\xe5\xa4\x87\xe9\x94\x80\xe5\x94\xae\xe6\x9d\xa1\xe6\xac\xbe', 'Google Inc.', 'Nike, Inc.', '\xe9\x80\x89\xe6\x8b\xa9\xe8\xaf\xad\xe8\xa8\x80', '\xe4\xba\x86\xe8\xa7\xa3\xe8\xaf\xa6\xe6\x83\x85', 'Cardiograph', '\xe2\x80\xaaTi\xe1\xba\xbfng Vi\xe1\xbb\x87t\xe2\x80\xac', '\xe5\x9b\xbe\xe7\x89\x87', '\xe2\x80\xaaRom\xc3\xa2n\xc4\x83\xe2\x80\xac', '\xe6\x90\x9c\xe7\xb4\xa2', '\xe2\x80\xaa\xc4\x8ce\xc5\xa1tina\xe2\x80\xac',]
--------------------------
Double行动:
原帖分数:30

------解决方案--------------------
引用:
上面的那个16进制是输出 name整个列表的结果,单独输出each是鈥箘喔椸涪鈥这样的乱码。
为什么两种输出会不同呢?各自要怎么处理才能输出正确的。
还有qq120848369你说的终端编码是什么,我怎么知道是什么方式


你现在需要确认几个东西:

1, 你的代码里的字符是什么编码的, 比如你的secureCRT是utf8的,那么它就是utf8的。
2,export LANG=en_US.utf8,这一步是为了让linux正确的解析字节流(编码)以便对应到字符。
3,前两步之后,通过secureCRT看你输入的汉字是不会乱码的。
4,源代码的coding改成utf8,这是为了让python解析源代码时知道如何将字面常量字符串转到unicode内码。
5,如果你是py2.x,那么encode到utf8再输出。
6,如果你是Py3.x,那么直接print即可,python3.x会将unicode内码转到LANG编码。