python的编码问题
❶ python默认编码问题
编码就是二进制序列和代表的文本字符之间的映射关系。
你说的大多数问题是python2的,python3已经自动解决了,不需要这么麻烦。默认是utf8.
另外平时遇到的编码问题,通常又和源码本身的编码、系统终端显示的编码、字体纠结在一起,要考虑的因素挺多的。
个人认为理解编码最好的方法是尝试用写二进制序列的方法,输出你想要的文本,多试错就理解了。
❷ python编码的问题
ot=os.listdir("F:")
printot
测试了下上面这两条语句,中文命名的文件夹列表显示如下:
['xd2xf4xc0xd6', 'xcdxbcxc6xac']
这不叫乱码,只是以utf-8编码表示中文字符串。你的本意是想要得到['abc', 'bcd', '音乐', '图片']这种形式的输出,但是实际显示却是utf-8编码。
假设我们创建一个列表 ot = ['abc', 'bcd', '音乐', '图片'],并且文件开头定义了以utf-8格式进行编码。那么在内存里列表对象ot存储的是'abc', 'bcd', 'xd2xf4xc0xd6', 'xcdxbcxc6xac'这四个值。
为什么英文字符还是英文,中文字符就变成“乱码”了呢?因为计算机不是人,它是看不懂'音乐'和'图片'这几个汉字字符的,它只认识字符的编码值。对于多种编码来说,键盘上那些英文字符编码值都是一样的。中文则不一样。
为什么打印字符串显示出了中文,打印列表的时候显示的却是utf-8编码?print 的作用是把计算机可理解的对象以人类可以理解的方式打印出来,具体显示结果跟你要打印的对象有关,打印的是字符串,显示的就是人类语言表示的字符串对象,打印的是列表,显示的就是列表对象本身,也即该列表里存储的值。
printot表示打印一个列表对象ot,打印的是列表本身,所以它里面的项以什么形式存储的就以
什么形式显示。
❸ Python 源程序编码注意事项
默认情况下,Python 源文件是 UTF-8 编码。在此编码下,全世界大多数语言的字符可以同时用在字符串、标识符和注释中 — 尽管 Python 标准库仅使用 ASCII 字符作为标识符,这只是任何可移植代码应该遵守的约定。如果要正确的显示所有的字符,你的编辑器必须能识别出文件是 UTF-8 编码,并且它使用的字体能支持文件中所有的字符。
你也可以为源文件制定不同的字符编码。为此,在 #! 行(首行)后插入至少一行特殊的注释行来定义源文件的编码:
# -*- coding: encoding -*-
通过此声明,源文件中所有的东西都会被当作用 encoding 指代的 UTF-8 编码对待。在 Python 库参考手册 codecs 一节中你可以找到一张可用的编码列表。
例如,如果你的编辑器不支持 UTF-8 编码的文件,但支持像 Windows-1252 的其他一些编码,你可以定义:
# -*- coding: cp-1252 -*-
这样就可以在源文件中使用 Windows-1252 字符集中的所有字符了。这个特殊的编码注释必须在文件中的 第一或第二 行定义。
❹ python的编码问题,一个小例子让人很困惑
其实,字典中的uxxxx或者x..之类 就是utf-8编码,经过解码就是汉字了
print 打印的字符是自动解码的。(根据第一行的 coding:utf-8)
print 打印的字典、列表之类的对象,一般没经过解码
如果你要输出解码的汉字,处理方法:
一,对每个scrapy抓取的数据都进行for循环decod
a={1:"你好",2:"谢谢",3:"对不起",4:"hi"}
forkina.keys():
printk,a[k].decode("utf-8")
二,使用json.mps
a={1:"你好",2:"谢谢",3:"对不起",4:"hi"}
importjson
printjson.mps(a,encoding='UTF-8',ensure_ascii=False)
❺ python的参数编码问题,应该怎么改
对于name.get_keyphrases()方法,name(也就是代码中的tr4s)这个参数不能是字符(str),只能是integer 或bytes-like
❻ python文件编码问题
还真有些弄不明白。不过我就明白的给你说。
不要用记事本,另存改变编码,除非你目标编码是ANSI
只要是文字都是字符编码,不可能是内存中的编码格式。WINDOWS使用MBCK(类似这个名子)的内部编码。就是多字节编码的方式存在内存里。但是存在文件里一定是字符串,一定是正式的国际编码。
ANSI是操作系统内的标准编码。对于通常来说就是GB18030
unicode有很多编码方式。包括utf-8,utf-16, big-5, gbk, gb18030等。所以这里微软说的unicode估计是给微软程序做序列化用的格式
unicode big endian同上。这个编码应该是一个长字节编码用的。
顺便说一下,微软记事本的UTF-8编码文件有问题,前面有1-2个字节的识别用字符。如果你用python或者是其它操作系统读取文件,可能会出问题。
❼ 新手,求教关于python3编码的问题
你需要明白两个概念:
什么叫字符串、字节串
在Python中字符串是指一串可以展示在终端里、供人阅读的字符,至于字符采用什么编码并不重要,同样的文字,可能是用Unicode、UTF-8或GBK编码,但打印在终端中的内容相同,那么就认为是同一串字符串。而字节串是指将字符串通过某种编码转换得到的一串字节,同样一个字符串,使用不同的编码转换后得到的字节串可能完全不同。
什么叫encode、decode
encode中文为编码,顾名思义,是将字符串以某种编码形式编码得到字节串的过程;相反,decode中文为解码,是将字节串以某种编码形式翻译得到字符串的过程。
a是一个字符串,它的内容是“周杰伦”这三个字,类型是str;b = a.encode('utf-8')是将a以utf-8形式编码得到的字节串,它的内容是“周杰伦”这三个字的utf-8编码,类型是bytes。
❽ Python编码字符串解码问题,怎么解决
在将字符串写入文件时,执行f.write(str),后台总是报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128),即ascii码无法被转换成unicode码。
刚开始我以为Python默认的编码是utf-8,所以使用decode方法和encode方法来进行编码转换,后来怎么也不成功,于是怀疑是否默认编码不是utf-8。
使用下面语句获取python当前的默认编码:
[python] view plain
import sys
print sys.getdefaultencoding()