python编码的问题

发布网友 发布时间: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 的作用是把计算机可理解的对象以人类可以理解的方式打印出来,具体显示结果跟你要打印的对象有关,打印的是字符串,显示的就是人类语言表示的字符串对象,打印的是列表,显示的就是列表对象本身,也即该列表里存储的值。


print ot 表示打印一个列表对象ot,打印的是列表本身,所以它里面的项以什么形式存储的就以
什么形式显示。

热心网友 时间:2022-04-06 06:39

python2默认编码是ascii,如果你在文件顶部添加# -*- coding: utf-8 -*-,会转成utf8,
通过字符串前面添加u,如u“中国”,可以转成unicode.

python3默认unicode

热心网友 时间:2022-04-06 08:13

你好:
编码的问题确实头疼;
我在博客园摘抄了一些编码问题;
这个问题主要是因为:
print 是将字符串转化为系统的编码输出。
而list存储的你设置的编码。追问如何以正确的编码,存储为列表?

追答那你就得知道你的编码的格式;
进行先解码,再编码!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com