直接说python中的decode encode
是用来转码的(编码转换)。
decode()英文意思:解码 ,一个人脱了衣服(无论穿什么,脱了都一样)。
encode()英文意思:编码,一个人可以穿不同的衣服(穿啥由你决定)。
python中脱了衣服都是unicode编码。字符串在python内部表示是unicode。
Q:想要将gb18030编码转码为utf-8
A:必须先将其解码为unicode,然后再重新编码成utf-8,以unicode为中间人。
如,line=‘自然语言处理’,如果是在utf-8的文件中,该字符串就是utf-8编码,如果是在gb18030的文件中,则其编码为gb18030。
假如在gb18030的文件中,如何将gb18030编码转换为utf-8:要先解码(脱)为unicode,再编码(穿)。code: line.decode('18030).encode('utf-8')
Q:想要将unicode编码转码为utf-8
如果这个字符串就是unicode编码,则直接穿:line.encode('utf-8')
编码知识
简介
计算机只认识0和1。我们在电脑上看到的文字,只有先变成0和1,计算机才能识别它。
这种数据转换为二进制,二进制转换为数据就是编码。
编码发展史
- ASCII:美国人发明的计算机,用8位0和1的组合,一一对应英文中的字符,整出了一个表,就是ASCII表。
- GB23122:计算机传入中国,中文博大精深,简体字繁体字多,8位满足不了了,扩展了ASCII表,新表叫GB2312。
- GB18030:GB2312还不够用,扩充成GB18030。
- 各国各编码:每个国家都搞,各种各样的编码。
- Unicode:各自编码无法国际交流,国际组织搞了一个Unicode。规定所有字符就两个字节,就是固定的。2的16次方够表示所有的字符了。
- utf(utf-8、utf-16等):美国人不愿意了,人家8位就够用了,unicode却让他们的语言多了一个字节,白浪费了一个字节空间。协商后,出现了utf。