Python中encode/decode有什么区别?
在使用Python编写程序时,我们经常需要进行字符串的编码和解码操作。而Python中提供了encode和decode两个方法来实现字符串的编码和解码。那么这两个方法到底有什么区别呢?
阅读更多:Python 教程
encode方法
encode方法主要用于将中文字符转换为计算机能够识别的编码形式,比如UTF-8、GB2312等。该方法的基本语法如下:
string.encode(encoding='UTF-8',errors='strict')
其中,string表示需要进行编码的字符串,encoding表示编码方式,默认为UTF-8,errors表示编码错误处理方式,默认为’strict’。以下是一个示例代码:
# -*- coding: utf-8 -*-
str = u'中国'
print str.encode('utf-8') # 输出:'\xe4\xb8\xad\xe5\x9b\xbd'
print str.encode('gb2312') # 输出:'\xd6\xd0\xb9\xfa'
在上述示例代码中,我们定义了一个包含中文字符的字符串str。然后分别使用encode方法将这个字符串转换为UTF-8和GB2312编码形式。可以看到,无论使用哪种编码方式,最终输出的都是一串16进制的编码。
decode方法
decode方法则是将计算机能够识别的编码形式转换为中文字符。该方法的基本语法如下:
string.decode(encoding='UTF-8',errors='strict')
其中,string表示需要进行解码的字符串,encoding表示编码方式,默认为UTF-8,errors表示编码错误处理方式,默认为’strict’。以下是一个示例代码:
# -*- coding: utf-8 -*-
str_utf8 = '\xe4\xb8\xad\xe5\x9b\xbd'
str_gb2312 = '\xd6\xd0\xb9\xfa'
print str_utf8.decode('utf-8') # 输出:中国
print str_gb2312.decode('gb2312') # 输出:中国
在上述示例代码中,我们定义了两个包含编码形式的字符串str_utf8和str_gb2312。然后分别使用decode方法将它们转换为中文字符。可以看到,无论使用哪种编码方式,最终输出的都是中文字符。
区别
从上述示例代码可以看出,encode和decode方法主要区别在于作用方向。encode方法的作用是从中文字符转换为计算机能够识别的编码形式,而decode方法的作用则是从计算机能够识别的编码形式转换为中文字符。并且,编码和解码所使用的编码方式必须一致,否则编码会出错。
PS:以上示例代码均是使用Python2.7版本编写
结论
在Python中,encode方法主要用于将中文字符转换为计算机能够识别的编码形式,而decode方法则是将计算机能够识别的编码形式转换为中文字符。并且,编码和解码所使用的编码方式必须一致,否则编码会出错。