大爱

Python编解码详解encode与decode

2015-04-14

在Python内部,字符串使用unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

  1. decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gbk’),表示将gbk编码的字符串str1转换成unicode编码。

  2. encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gbk’),表示将unicode编码的字符串str2转换成gbk编码。

因此,转码的时候一定要先搞明白,字符串str究竟是什么编码格式,先decode成unicode,再encode成其他编码。

其中,常见编码格式如下:

  1. GB2312编码:适用于汉字处理、汉字通信等系统之间的信息交换

  2. GBK编码:是汉字编码标准之一,是在 GB2312-80 标准基础上的内码扩展规范,使用了双字节编码

  3. ASCII编码:是对英语字符和二进制之间的关系做的统一规定

  4. Unicode编码:这是一种世界上所有字符的编码。当然了它没有规定的存储方式。

  5. UTF-8编码:是 Unicode Transformation Format - 8 bit 的缩写, UTF-8 是 Unicode 的一种实现方式。它是可变长的编码方式,可以使用 1~4 个字节表示一个字符,可根据不同的符号而变化字节长度。

示例:

在一个文本中进行两种编码操作时需要编码转换,读取时用decode将文本原来的编码转换成Unicode,写入时用encode将编码转换成需要转换成的编码。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
# -*- coding:utf-8 -*-

content=u'你好' #Unicode格式字符串

f1=open('test.txt', 'w')
info1 = content.encode('GBK') #写入时,编码为GBK
f1.write(info1)
f1.close()

f2 = open('test.txt', 'r')
info2 = f2.read().decode('GBK') #读取时,已知GBK,解码为Unicode
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章