python2 中 unicode encode decode

python2 中 unicode encode decode utf8

unicode

  1. unicode 相当于 code point(0-0x10ffff的整数).
  2. unicode编码的缺点:浪费空间(每个字符对应32-bit)

utf8编码的优点:

  1. 能处理所有unicode code point
  2. 节省空间,去掉了0字节
  3. ASCII字符串也是有效的UTF8字符串
  4. 如果字节丢失,容易找到下一个code point
1
2
3
4
5
6
7
# python
a = "我们" # utf8 编码的字符串
a_unicode = a.decode("utf8") # decode 为 unicode
assert a_unicode == u"我们"
b = a_unicode.encode("utf8") # encode utf8 还原
assert a==b