发布网友 发布时间:2022-04-06 03:51
共3个回答
热心网友 时间:2022-04-06 05:21
ot = os.listdir("F:")
print ot
测试了下上面这两条语句,中文命名的文件夹列表显示如下:
['\xd2\xf4\xc0\xd6', '\xcd\xbc\xc6\xac']
这不叫乱码,只是以utf-8编码表示中文字符串。你的本意是想要得到['abc', 'bcd', '音乐', '图片']这种形式的输出,但是实际显示却是utf-8编码。
假设我们创建一个列表 ot = ['abc', 'bcd', '音乐', '图片'],并且文件开头定义了以utf-8格式进行编码。那么在内存里列表对象ot存储的是'abc', 'bcd', '\xd2\xf4\xc0\xd6', '\xcd\xbc\xc6\xac'这四个值。
为什么英文字符还是英文,中文字符就变成“乱码”了呢?因为计算机不是人,它是看不懂'音乐'和'图片'这几个汉字字符的,它只认识字符的编码值。对于多种编码来说,键盘上那些英文字符编码值都是一样的。中文则不一样。
为什么打印字符串显示出了中文,打印列表的时候显示的却是utf-8编码?print 的作用是把计算机可理解的对象以人类可以理解的方式打印出来,具体显示结果跟你要打印的对象有关,打印的是字符串,显示的就是人类语言表示的字符串对象,打印的是列表,显示的就是列表对象本身,也即该列表里存储的值。
热心网友 时间:2022-04-06 06:39
python2默认编码是ascii,如果你在文件顶部添加# -*- coding: utf-8 -*-,会转成utf8,
通过字符串前面添加u,如u“中国”,可以转成unicode.
python3默认unicode
热心网友 时间:2022-04-06 08:13
你好:
编码的问题确实头疼;
我在博客园摘抄了一些编码问题;
这个问题主要是因为:
print 是将字符串转化为系统的编码输出。
而list存储的你设置的编码。追问如何以正确的编码,存储为列表?
追答那你就得知道你的编码的格式;
进行先解码,再编码!