python print十六进制上print出来中文都是16进制该怎么处理怎么解决

[d]python下print出来中文都是16进制该怎么办本帖最后由 fibbery 于
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',&'ck',&'\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是鈥?箘喔椸涪鈥这样的乱码。
为什么两种输出会不同呢?各自要怎么处理才能输出正确的。
还有qq你说的终端编码是什么,我怎么知道是什么方式
你现在需要确认几个东西:
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编码。
随机推荐程序问答结果
如对文章有任何疑问请提交到,或者您对内容不满意,请您反馈给我们发贴求解。
,机器学习分类整理更新日期:: 00:10:28
如需转载,请注明文章出处和来源网址:
本文WWW.DOC100.NET DOC100.NET版权所有。1763人阅读
Python(8)
问题描述:
在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好:
s1 = 'I am a long sentence.'
s2 = 'I\'m short.'
print '%-30s%-20s' %(s1,s2) #'%-30s' 含义是 左对齐,且占用30个字符位
print '%-30s%-20s' %(s2,s1)
这里应用了最原始的cmd控制台,一些IDE自带的控制台(如Sublime text)可能会有不同的输出效果。
但当字符串包含中文时,却发现它对齐得不是很好:
# -*- coding:utf-8 -*-
#author: Song Bo, Eagle, ZJU
#email: sbo@
s1 = '我是一个长句子,是的很长的句子。'
s2 ='我是短句子'
print '%-30s%-20s' %(s1,s2)
print '%-30s%-20s' %(s2,s1)
首先是出现乱码:
cmd控制台并未正确解码utf-8编码,把s1和s2解码成unicode即可:
s1 = u'我是一个长句子,是的很长的句子。'
s2 =u'我是短句子'
print '%-30s%-20s' %(s1,s2)
print '%-30s%-20s' %(s2,s1)
无法对齐。
原因是这样:在print中,函数为了实现字符串对齐,会在未达到指定长度的字符串末尾添上空格补齐。
但是,问题在这里,它会填入ASCII码为20的space,也就是半角空格。它的长度等于每个字母或数字的宽度,但远比汉字的宽度小,所以导致补足后的字符串长度仍然不同。
解决方案:
重写一个格式对齐函数,函数中判断字符串是否是中文字符串,有的话则添加全角空格补齐,否则添加半角空格补齐。
# -*- coding:utf-8 -*-
#author: Song Bo, Eagle, ZJU
#email: sbo@
def myAlign(string, length=0):
if length == 0:
return string
slen = len(string)
re = string
if isinstance(string, str):
placeholder = ' '
placeholder = u' '
while slen & length:
re += placeholder
s1 = u'我是一个长句子,是的很长的句子。'
s2 =u'我是短句子'
print myAlign(s1, 20) + myAlign(s2, 10)
print myAlign(s2, 20) + myAlign(s1, 10)
中英混排:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15332次
排名:千里之外
原创:16篇
(2)(5)(6)(1)(4)(1)(1)只需一步,快速开始
后使用快捷导航没有帐号?
查看: 12244|回复: 5
pycharm如何解决中文输出乱码的问题?
签到天数: 405 天[LV.9]以坛为家II
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
__author__ = 'Administrator'
s = &你好吗&
File &F:/wxPython/wxdemo.py&, line 2
SyntaxError: Non-ASCII character '\xe4' in file F:/wxPython/wxdemo.py on line 2, but
see http://www.python.org/peps/pep-0263.html for details
英文可以正常输出,但是中文就报错,如何解决??
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 72 天[LV.6]常住居民II
保存文件的时候更改一下文件的编码试试。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 405 天[LV.9]以坛为家II
都试过了,行不通啊!我在网上也没找到合适的答案啊!:sweat:
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 405 天[LV.9]以坛为家II
哈哈,我知道怎么解决了!!在Pycharm中如何显示中文不出现乱码。在File-&setting-&File Encodings-&IDE Encoding:&SYstem Default& Project Encoding:&System Default&即可
在文件输出方面在文件开头加# coding:utf-8即可
# coding:utf-8
s = u'你好'
F:\Python27\python.exe F:/wxPython/wxdemo.py
Process finished with exit code 0
对的,在字符串前加上 u 即可改为 Unicode 编码,Python3已全部默认为 Unicode 编码。&
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 1833 天[LV.Master]伴坛终老
八神 发表于
哈哈,我知道怎么解决了!!在Pycharm中如何显示中文不出现乱码。在File-&setting-&File Encodings-&IDE En ...
对的,在字符串前加上 u 即可改为 Unicode 编码,Python3已全部默认为 Unicode 编码。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 16 天[LV.4]偶尔看看III
字符串前加上 u 即可,加回答得晚了:huffy:
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
•••(
Powered by【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码
Python中的字符编码,其实的确有点复杂。
再加上,不同的开发环境和工具中,显示的逻辑和效果又不太相同,尤其是,中文的,初级用户,最常遇到的:
(1)在Python自带的IDE:IDLE中折腾中文字符,结果看到的差不多都是乱码类的东西,比如:’\xd6\xd0\xce\xc4′
(2)将一个中文字符,打印输出到windows的cmd命令行中,看到的是乱码
对此,此处专门整理一下,这些常见的现象,和现象背后的根本原因,以及如何解决这类问题。
其实,看下面问题之前,最好是已经了解相关的背景知识,才更容易看懂的:
1.字符编码的基本知识
对于字符编码本身,比如UTF-8,GBK等等,不熟悉的,不了解是啥的话,先去看:
2.Windows的cmd中的默认是GBK编码
这方面不了解的,也需要先去看:
3.关于IDLE
其实也要先大概了解:
Python内部,默认的字符编码是,是根据操作系统,我们多数都是Windows的中文系统,默认是GBK编码。
而IDLE中,直接输入中文字符,其实就是GBK编码的。
4.Python中的字符串的设计
主要是:Python 2.x中的str和unicode ,和,Python 3.x中的bytes和str,之间的逻辑,转换,和区别。
不了解的,也要先去看:
常见问题:IDLE中看到类似于’\xd6\xd0\xce\xc4’,而不是我想要的中文字符
初学者,最容易遇到的问题就是:
中文用户,用了Python自带的IDLE,在里面输入中文后,结果显示出,类似于:
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
的内容,而不是希望看到输出的中文字符,比如:
此现象的解释是:
实际上,此处你,本身就已经得到了,正确的,默认的GBK编码的,中文字符串:&我是中文&
了。只是:
IDLE这个,Python自带的IDE,不是很好用的IDE,给你显示出来,其内部的16进制的值而已。
1. 对于此点,你可以去用decode去验证一下:
Python 2.7.3 (default, Apr 10 :47) [MSC v.1500 64 bit (AMD64)] on win32
Type &copyright&, &credits& or &license()& for more information.
&&& &我是中文&
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
&&& &我是中文&.decode(&GBK&)
u’\uf\u4e2d\u;
其中,GBK的字符串,经过解码后,就可以得到Unicode的字符串了,对应的显示出来的是:
u’\uf\u4e2d\u;
\u6211,\u662f,\u4e2d,\u6587,分别对应着,四个中文字符:&我&,&是&,&中&,&文&
2. 有人会问,我怎么知道这些值,是对应着这四个中文字符的呢?
那是因为你不熟悉Unicode。且也不会去查Unicode表格。
等你看了之前告诉你的:
然后再去参考我的:
去查Unicode值,就可以查到“我”对应的Unicode值是0x6211:
同理,可以查得剩下的:
0x662f=&是&=\u662f
0x4e2d=&中&=\u4e2d
0x6587=&文&=\u6587
3.回到上面的问题,接着,还可以接着进一步验证,之前的字符串,的确是GBK:
Python 2.7.3 (default, Apr 10 :47) [MSC v.1500 64 bit (AMD64)] on win32
Type &copyright&, &credits& or &license()& for more information.
&&& &我是中文&
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
&&& &我是中文&.decode(&GBK&)
u’\uf\u4e2d\u;
&&& &我是中文&.decode(&GBK&).encode(&GBK&)
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
之前直接输入中文字符所得到的16进制值,和通过GBK解码后得到Unicode,然后再编码为GBK的16进制的值,是一样的
-& 说明之前的中文字符的确是GBK的编码。
4.另外,也可以顺带看看,UTF-8的输出是啥:
Python 2.7.3 (default, Apr 10 :47) [MSC v.1500 64 bit (AMD64)] on win32
Type &copyright&, &credits& or &license()& for more information.
&&& &我是中文&
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
&&& &我是中文&.decode(&GBK&)
u’\uf\u4e2d\u;
&&& &我是中文&.decode(&GBK&).encode(&GBK&)
‘\xce\xd2\xca\xc7\xd6\xd0\xce\xc4’
&&& &我是中文&.decode(&GBK&).encode(&UTF-8&)
‘\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87’
所以,总结此问题:
IDLE中输入中文字符,但是显示出来的是类似于’\xd6\xd0\xce\xc4’的值,而不是想要的中文字符
的答案就是:
其实本身已经是中文字符。
只是根据当前默认是GBK编码,所显示出来的GBK编码的内部的值而已。
其实,对此问题,更加终极的解决办法是:
由于IDLE不是很好用,所以不推荐用户,尤其是初学者,直接就用IDLE来开发Python。
而是推荐你用:
Notepad++ 加 cmd
具体的原因和解释,详见:
更更终极的办法是:
这类常见的错误,属于学习Python中所容易走的弯路。
而你要是按照我的教程去学习,不仅可以少走很多弯路,而且更容易明白很多基本的逻辑:
高级专题阐述:
常见问题:中文字符打印输出显示到命令行(Windows的cmd)显示乱码
和上面的现象类似的一个现象就是:
当用python代码,打印输出一个中文字符到命令中,结果却显示乱码。
(1)用如下代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
-------------------------------------------------------------------------------
[Function]
【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码
/python_already_got_correct_encoding_string_but_seems_print_messy_code
/about/me/
-------------------------------------------------------------------------------
#---------------------------------import---------------------------------------
#------------------------------------------------------------------------------
def char_ok_but_show_messy():
Demo Python already got normal chinese char, with some encoding, but print to windows cmd show messy code
#此处,当前Python文件是UTF-8编码的,所以如下的字符串,是UTf-8编码的
cnUtf8Char = &我是UTF-8的中文字符串&;
#所以,将UTF-8编码的字符串,打印输出到GBK编码的命令行(Windows的cmd)中,就会显示出乱码
&cnUtf8Char=&,cnUtf8C #cnUtf8Char= 鎴戞槸UTF-8鐨勪腑鏂囧瓧绗︿覆
#如果想要正确显示出中文字符,不显示乱码的话,则有两种选择:
#1. 把字符串转换为Unicode编码,则输出到GBK的命令行时,Python会自动将Unicode的字符串,编码为GBK,然后正确显示字符
decodedUnicodeChar = cnUtf8Char.decode(&UTF-8&);
print &decodedUnicodeChar=&,decodedUnicodeC #decodedUnicodeChar= 我是UTF-8的中文字符串
#2. 让字符串的编码和输入目标(windows的cmd)的编码一致:把当前的字符串(由上述解码后得到的Unicode再次去编码)也变成GBK,然后输出到GBK的命令行时,就可以正确显示了
reEncodedToGbkChar = decodedUnicodeChar.encode(&GBK&);
print &reEncodedToGbkChar=&,reEncodedToGbkC #reEncodedToGbkChar= 我是UTF-8的中文字符串
###############################################################################
if __name__==&__main__&:
char_ok_but_show_messy();
此时Python的文件编码是UTF-8。
不了解的,详见:
(2)当前代码下载(右键另存为):
(3)还原现象
运行的结果是:
代码中已经解释的很清楚了。
不再啰嗦。
和此类的,python的字符串编码方面的相关内容,之前有更多的总结:
共享此文章:
, , , , , ,
免费的格式化Javascript源码的网站
查询Unicode字符,且还带Oct,Decimal,Hex,HTML Entity
HTML和Javascript都支持,很好用。

我要回帖

更多关于 print 二进制 的文章

 

随机推荐