decode,encode的⽤法
python内部的字符串⼀般都是 Unicode编码。代码中字符串的默认编码与代码⽂件本⾝的编码是⼀致的。所以要做⼀些编码转换通常是要以Unicode作为中间编码进⾏转换的,即先将其他编码的字符串解码(decode)成 Unicode,再从 Unicode编码(encode)成另⼀种编码。
decode 的作⽤是将其他编码的字符串转换成 Unicode 编码,eg name.decode(“GB2312”),表⽰将GB2312编码的字符串name转换成Unicode编码
encode 的作⽤是将Unicode编码转换成其他编码的字符串,de(”GB2312“),表⽰将unicode编码的字符串name转换成GB2312编码
所以在进⾏编码转换的时候必须先知道 name 是那种编码,然后 decode 成 Unicode 编码,最后载 encode 成需要编码的编码。当然了,如果 name 已经就是 Unicode 编码了,那么就不需要进⾏ decode 进⾏解码转换了,直接⽤ encode 就可以编码成你所需要的编码。值得注意的是:对 Unicode 进⾏编码和对 str 进⾏编码都是错误的。
eg:
由于内置函数 open() 打开⽂件时,read() 读取的是 str,读取后需要使⽤正确的编码格式进⾏ decode()。
write() 写⼊时,如果参数是Unicode,则需要使⽤你希望写⼊的编码进⾏ encode(),如果是其他编码格式的 str,则需要先⽤该 str 的编码进⾏ decode(),转成 Unicode 后再使⽤写⼊的编码进⾏ encode()。如果直接将 Unicode 作为参数传⼊ write() ,python 将先使⽤源代码⽂件声明的字符编码进⾏编码然后写⼊。
例
1. # coding: UTF-8
2.
3. fp1 = open('', 'r')
4. info1 = ad()
5. # 已知是 GBK 编码,解码成 Unicode
6. tmp = info1.decode('GBK')
7.
8. fp2 = open('', 'w')
9. # 编码成 UTF-8 编码的 str
10. info2 = de('UTF-8')
11. fp2.write(info2)
12. fp2.close()
13. 先知道info1是字符串,其编码为GBK,将其解码成unicode.存在tmp中。再将其编码成utf-8,存在info2中。这样写⼊fp2⽂件中的内容
就是utf-8格式的了。那么能保证fp2中的内容编码⼀致,都是utf-8
14. utf-8也能显⽰中⽂。它是可变长的编码⽅式,可以使⽤ 1~4 个字节表⽰⼀个字符,可根据不同的符号⽽变化字节长度。
15. python3中默认⽂件为utf-8格式。字符串不需使⽤.decode()。其作为unicode编码。可以直接使⽤encode编码为其他。
默认字符串是什么
16. 获取系统默认编码
17.
1. import sys
2. defaultencoding()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论