使用python时经常会遇到字符串编解码的问题,这里分享2.4版本中一些与之相关的经验。
1)unicode和UTF8、gbk、UTF16的区别。
简单来说,unicode是一种编码标准,UTF8,gbk,UTF16都是具体的编码,可以认为是unicode的实现,通常用于数据的存储和传输。例如”中“的unicode编码是4e2d, gbk编码是d6d0。utf8编码是E4 B8 AD。
2)python里的encode和decode
假设,a = u"中" (u表示a是unicode字符),python里encode通常是将unicode形式的字符编码成具体编码(例如gbk)。反之,decode是将具体的编码转化成unicode。
例如:
aGbk = a.encode("gbk") aGbk保存"中"的gbk编码结果。
aUtf8 = a.encode("utf8") aUtf8保存"中"的utf8的编码结果
aUnicode = aGbk.decode("gbk") 使用gbk将aGbk解码成unicode。此时aUnicode与a相等
aUnicode = aUtf8.decode("utf8") 使用utf8将aUtf8解码成unicode。此时aUnicode与a相等
3) unicode操作符
有时会见到 b= unicode("中","gbk")这种表达式。实际上,unicode和decode的作用等效。
1)unicode和UTF8、gbk、UTF16的区别。
简单来说,unicode是一种编码标准,UTF8,gbk,UTF16都是具体的编码,可以认为是unicode的实现,通常用于数据的存储和传输。例如”中“的unicode编码是4e2d, gbk编码是d6d0。utf8编码是E4 B8 AD。
2)python里的encode和decode
假设,a = u"中" (u表示a是unicode字符),python里encode通常是将unicode形式的字符编码成具体编码(例如gbk)。反之,decode是将具体的编码转化成unicode。
例如:
aGbk = a.encode("gbk") aGbk保存"中"的gbk编码结果。
aUtf8 = a.encode("utf8") aUtf8保存"中"的utf8的编码结果
aUnicode = aGbk.decode("gbk") 使用gbk将aGbk解码成unicode。此时aUnicode与a相等
aUnicode = aUtf8.decode("utf8") 使用utf8将aUtf8解码成unicode。此时aUnicode与a相等
3) unicode操作符
有时会见到 b= unicode("中","gbk")这种表达式。实际上,unicode和decode的作用等效。