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!'
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!'
结论是什么呢?
- Unicode 对任何语言文字,都是 1个字符1个编码,所以“hi!”是3个Unicode字符,“你好!”也是3个Unicode字符。
- UTF-8 用3个字符来表示1个中文字符,用1个字符来表示英文字符。所以,“hi!”是3个UTF-8字符,“你好!”是7个UTF-8字符。
- GBK 用2个字符来表示1个中文字符,用1个字符来表示英文字符。所以,“hi!”是3个GBK字符,“你好!”是5个GBK字符。
- encode 方法,只适用于 unicode 字符串,参数是目标编码代号。
- decode 方法,只适用于非 unicode 字符串,参数是源字符串的编码代号。