Unicode是一个试图包含(所有)已知字母、字符和符号的表,通常也称为字形。这一数字略高于11万,意味着在自动取款机上持有标志。因此,DECODED状态是这个表中的一个(代码)点。但是,因为一个字节不能容纳超过8bits=256个状态,所以必须将unicode表示形式编码为字节流。最常用的编码技术是所谓的UTF-8编码,它继承了旧的ASCII编码。UTF-8编码允许使用一到四个字节对Unicode字形进行编码。
所以编码或解码总是从unicode开始或朝着unicode进行。如果你想从一种编码转换到另一种编码,你必须通过unicode来完成:
[decode] [encode]
ASCII ---> UNICODE ---> UTF-8
1 Glyph 1 Glyph
= 1 Glyph =
1 Byte 1-4 Bytes
unicode_str = mystring.decode('ascii')
utf8_str = unicode_str.encode('utf-8')
(不是最好的例子,因为ASCII总是适合utf-8)
所以如果你想解码你的
post
变量,您必须知道哪个编码具有引用的字符串。在python2.x中,它通常是ASCII编码的。在python 3.x中,它应该是UTF-8。
import sys
print sys.getdefaultencoding()
如果你
邮递
-变量不是在源代码中定义的,而是从外部字节流中读取的
必须知道
编码,否则你会倒霉的。