encode decode
str --------> unicode --------> utf8
<--------- unicode <--------
decode encode
# on windows python3
a = "u4e2du56fdu8ba1u7b97u673a" # str
a.encode().decode("utf8") # 先编码成unicode, 再使用utf8解码
a = u"u6570u636eu4e2du5fc3-u6316u6398u7ec4" # unicode
print(a.encode("utf8"))
>>>挖掘组
# on linux python2
>>> a = "中国计算机"
>>> a
'xe4xb8xadxe5x9bxbdxe8xaexa1xe7xaex97xe6x9cxba' # 不能用ascii表示的用x##表示
>>> print a
中国计算机
>>> type(a)
<type 'str'>
>>> a = u"中国计算机"
>>> a
u'u4e2du56fdu8ba1u7b97u673a'
>>> print(a)
中国计算机
>>>a.encode("utf8")
'xe4xb8xadxe5x9bxbdxe8xaexa1xe7xaex97xe6x9cxba'
Unicode是一种字符集,它为每一种现代或古代使用的文字系统中出现的每一个字符都提供了统一的序列号,规定了符号的二进制代码,但没有规定这个二进制代码应该如何存储。也就是说:Unicode的编码方式是固定的,但是实现方式根据不同的需要有跟多种,常见的有UTF-8、UTF-16和UTF-32等。
decode early, unicode everywhere, encode late,即:在输入或者声明字符串的时候,尽早地使用decode方法将字符串转化成unicode编码格式;然后在程序内使用字符串的时候统一使用unicode格式进行处理,比如字符串拼接、字符串替换、获取字符串的长度等操作;最后,在输出字符串的时候(控制台/网页/文件),通过encode方法将字符串转化为你所想要的编码格式,比如utf-8等
https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896