微信企业官方网站怎么做,如何分析网站竞争对手,wordpress 图片编辑,重庆seo公司怎么样来源#xff1a;实习僧
作者#xff1a;实习僧的何梁
真正完全搞清楚Python的编码问题
我想大家经常被Python的编码问题搞的晕头转向#xff0c;下面我一头来自实习僧的牛#xff0c;为您详细解析这个天坑:
请看图#xff1a;
1、python中一切皆对象#xff0c;字符对象分…来源实习僧
作者实习僧的何梁
真正完全搞清楚Python的编码问题
我想大家经常被Python的编码问题搞的晕头转向下面我一头来自实习僧的牛为您详细解析这个天坑:
请看图
1、python中一切皆对象字符对象分为两种一种是unicode对象,一种是str对象。
2、python中字符是unicode为基础的所以平时我们的字符串也就是str在python内存中其实是以unicode编码存储的。
3、所以我们平时print一个字符串的时候看到的是中文但是如果你把这个字符串放在list里(就是外面加上[ ])再print就能看到原生的编码了。因为前面说了在python内存存储中都是以unicode存储的所以放在List里面打印就能看见原生的存储模式。
4、str是字符串对象但是可以有很多不同的编码utf-8,gbk,ascii,都是编码。
5、不同编码的str对象互相不能直接转换也就是说utf-8编码的不能直接转换成gbk的。
6、但是不同编码的str对象都可以解码成unicode对象因为一切数据在Python都是以unicode存储的str.decode(编码类型)
7、unicode对象也可以编码成任意一种编码的str对象。 unicode.encode(编码类型)
8、所以不同编码的str对象可以先解码decode成unicode 再编码encode成其他编码的str对象。
9、utf-8包含国际上所有字符的编码,GBK主要包含全部中文字符所以说我们大家爱用utf-8因为全。
10、所以说utf-8中有一些字符gbk没有所以有一些Utf-8解码后再编码成gbk后会报错因为gbk没有那种字符。
11、有一些str中可能混着有gbk,utf-8等好几种编码所以有时候decode的时候会报错因为你按照gbk解码可能里面又包含了一种不识别的utf-8码得到。
12、以上两条有没有只编码或者解码对的啊错误的字符就跳过
13、有decode(utf-8,ignore),encode(utf-8,ignore) 加一个ignore参数 就会忽略错误。
14、在python中可以使用chardet.detect(str)来检测一个str是什么编码的
15、chardet.detect(str)有一个缺点就是他是根据概率来的比如如果字符串是aaaaaa你,前面的单字符就会判断为其他编码因为单字母本身就是其他编码都支持所以
#ISO-8859-2 西欧字符集
16、print str 或者 unicode 都会显示出正常的文字但是python中直接显示 str是\xe3\xbd这种字符unicode是 u\u4f60 这种的
17、大家可以在自己本机上多试试。
●本文编号2201以后想阅读这篇文章直接输入2201即可。
●本文分类“Python”搜索分类名可以获得相关文章。
●输入m可以获取到文章目录
本文内容的相关公众号推荐Python编程↓↓↓
Linux学习↓↓↓
更多推荐《