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:另外,在编写图形界面用来显示系统文件列表,窗口设置显示文本为中文没有问题,但是读取的中文文件名却显示乱码(非编码符)
你的文件头包含了编码信息,因此open能正确识别。
在Python中,语句 b=u"你好" 中的 u 限定符是不是表示其后的字符串为 unicode 编码。
你可以尝试在代码中直接将 u"你好"这样的字符串直接赋值给你的窗口UI显示,如果能正确显示,那么你从文件中读取的字符串就需要先转换成 unicode 编码;如果不能正确显示,那么你从文件中读出的字符串就需要转换成 utf-8 编码;
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:/你好')
以上的中文显示问题,都是从输出时发生的,貌似和输出方式有关?还是和编码?根据通用的解决办法也没有解决...
哎,头疼啊,我碰到这种问题一直解决不了,怎么办啊