首页 新闻 会员 周边

Python_中文显示

0
悬赏园豆:15 [已解决问题] 解决于 2012-09-03 10:02
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> sys.setdefaultencoding('utf8')

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    sys.setdefaultencoding('utf8')
AttributeError: 'module' object has no attribute 'setdefaultencoding'
>>> reload(sys)
>>> sys.setdefaultencoding('utf8')
>>> sys.getdefaultencoding()
>>> a=5
>>> a
>>> 
#Q1:从此开始不显示输出了...???
>>> a='你好'
>>> a
'\xc4\xe3\xba\xc3'
>>> print a.encode('utf-8')

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print a.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128)
>>> b=u"你好"
>>> b
u'\xc4\xe3\xba\xc3'
>>> print b.encode('utf-8')
脛茫潞脙

#Q2:IDLE设置编码UTF-8,无法显示中文,但是读取文件时却没有问题:

>>> f=open(r'C:\Users\Administrator\Desktop\你好.txt')
>>> for eachline in f:
    print eachline,

    
【成长所需的10种能力】1、考虑问题时的换位思考能力;2、强于他人的总结能力;3、简洁的文字表达能力;4、信息资料收集能力;5、目标调整能力;6、超强的自我安慰能力;7、书面沟通能力;8、企业文化的适应能力;9、客观对待忠诚;10、勇于接受份外之事。

(细心一点会发现,显示每个文件的开头第一个字符前貌似带一个点,但是不能单独复制出来,)
Q3:另外,在编写图形界面用来显示系统文件列表,窗口设置显示文本为中文没有问题,但是读取的中文文件名却显示乱码(非编码符)

bubu_步步的主页 bubu_步步 | 初学一级 | 园豆:186
提问于:2012-08-14 17:33
< >
分享
最佳答案
0

你的文件头包含了编码信息,因此open能正确识别。

在Python中,语句 b=u"你好"  中的 u 限定符是不是表示其后的字符串为 unicode 编码。

你可以尝试在代码中直接将 u"你好"这样的字符串直接赋值给你的窗口UI显示,如果能正确显示,那么你从文件中读取的字符串就需要先转换成 unicode 编码;如果不能正确显示,那么你从文件中读出的字符串就需要转换成 utf-8 编码;

收获园豆:15
Launcher | 高人七级 |园豆:45045 | 2012-08-14 17:47

Q1,一旦设置系统编码,接下来便没有输出了。restart IDLE则ok了。那语句没有问题吧?

Q2,变量b是unicode编码,但是还是无法正确显示中文?

对于简单的a="你好",转码无法直接正确显示,但print a 却显示正确。不知道哪里的问题

对于显示系统文件列表:

>>> print os.getcwd()
E:\desktop
>>> os.listdir(os.getcwd())
['12.txt', 'feedyourmind.txt', 'Labcam.xlsx', 'New folder', 'Python', 'python_practice', 'python_Q.txt', 'python\xb1\xca\xbc\xc7', 'read.txt', 'you.txt', '\xa1\xb6\xd6\xaa\xb5\xc0\xd7\xf6\xb5\xbd\xa1\xb7.pdf', '\xd7\xf6\xd0\xd4\xc4\xdc\xb2\xe2\xca\xd4\xc7\xb0\xba\xf3\xd0\xe8\xd2\xaa\xd6\xaa\xb5\xc0\xca\xb2\xc3\xb4.docx', '\xca\xb5\xcf\xb0\xb9\xa4\xd7\xf7\xd7\xdc\xbd\xe1.docx', '\xd7\xc0\xc3\xe6\xb1\xb3\xbe\xb0', '\xd6\xaa\xb5\xc0\xd7\xf6\xb5\xbd\xb1\xca\xbc\xc7.txt', '\xb7\xad\xd2\xeb.txt', '\xbc\xc6\xcb\xe3\xbb\xfa\xbb\xf9\xb4\xa1']
>>> 

中文文件名也是这样?(而上面例子,却可以正常显示文件内的中文内容)

如果显示到UI上,则为乱码了。

但是创建中文名文件夹则没有问题:os.mkdir(r'E:/你好')

 

以上的中文显示问题,都是从输出时发生的,貌似和输出方式有关?还是和编码?根据通用的解决办法也没有解决...

bubu_步步 | 园豆:186 (初学一级) | 2012-08-15 10:11
其他回答(1)
0

哎,头疼啊,我碰到这种问题一直解决不了,怎么办啊

Janvn | 园豆:202 (菜鸟二级) | 2014-09-04 19:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册