前言
- chardet.detect(): 查看编码类型;
- decode(): 把编码后的字符串转成未编码的unicode;(解码成unicode)
- encode(): 将unicode转成编码后的字符串;(编码为对应的类型)
一、常见编码类型
- utf-8: 是Unix下的一种通用编码,可以对汉字编码,应该是Unix环境下能打开看到汉字的唯一编码;
- gbk: 是win环境下的一种汉字编码,其中GB2312编码也算是gbk编码,这种编码在Unix环境中打开是乱码;
- unicode: 是一种二进制编码,所有的utf-8和gbk编码都得通过unicode编码进行转译,说的直白一点,utf-8和gbk编码之间不能之间转换,要在unicode之间过个场才能转换。( unicode-escape 编码集,他是将unicode内存编码值直接存储)
二、读取编码类型
>>> import chardet
>>> d = d.encode('utf-8')
>>> chardet.detect(d)
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
三、各编码之间的类型转换
1. 为什么类型转换?
- Python 默认脚本文件都是 ANSCII 编码的,当文件中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正;
- 一个 module 的定义中,如果.py文件中包含 中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明:# -- coding=utf-8 -- 或者 #coding=utf-8
2. 转换函数
- decode():把编码后的字符串转成未编码的unicode;
- encode():将unicode转成编码后的字符串
3. 示例
s = '你好'
s_ascii = s.encode('unicode_escape').decode('ascii')
s_chinese = s_ascii.encode('ascii').decode('unicode_escape')
print(s_ascii)
print(s_chinese)
文章参考来源: Python对中文字符的处理(utf-8/ gbk/ unicode) Python 编码转换与中文处理
|