Python 字符编码

 1 >>> str_ascii = '你好!'
 2 >>> str_unicode = u'你好!'
 3 >>> str_utf8 = str_unicode.encode('utf-8')
 4 >>> str_ascii
 5 '\xc4\xe3\xba\xc3!'
 6 >>> str_unicode
 7 u'\u4f60\u597d!'
 8 >>> str_utf8
 9 '\xe4\xbd\xa0\xe5\xa5\xbd!'
10 >>> str_utf8.decode('utf-8')
11 u'\u4f60\u597d!'
12 >>> str_unicode.encode('gbk')
13 '\xc4\xe3\xba\xc3!'

结论是什么呢?

  1. Unicode 对任何语言文字,都是 1个字符1个编码,所以“hi!”是3个Unicode字符,“你好!”也是3个Unicode字符。
  2. UTF-8 用3个字符来表示1个中文字符,用1个字符来表示英文字符。所以,“hi!”是3个UTF-8字符,“你好!”是7个UTF-8字符。
  3. GBK 用2个字符来表示1个中文字符,用1个字符来表示英文字符。所以,“hi!”是3个GBK字符,“你好!”是5个GBK字符。
  4. encode 方法,只适用于 unicode 字符串,参数是目标编码代号。
  5. decode 方法,只适用于非 unicode 字符串,参数是源字符串的编码代号。
原文地址:https://www.cnblogs.com/jonyzhu/p/1655567.html