为什么 unicode 形式的字符串不等于它的 unicode 代码点值?
Why the string in unicode form is not equal to its unicode code point value?
我们可以得到字符串你
的unicode代码点值:
u'你'.encode('unicode-escape')
b'\u4f60'
为什么unicode形式的字符串不等于它的unicode代码点值?
u'你' == u'\x4f\x60'
False
u'你' == u'\u4f60'
False
是的,但是你的比较字符串比较不正确。第一个是一个字节的两个单独的字符,第二个是反斜杠转义的,意思是字面的6个字符\u4f60
.
u'你' == u"\u4f60"
True
编码的字节字符串有两个反斜杠,因为编码对其进行了转义,这使得它即使变回字符串也不等同,除非您也使用 unicode-escape
对其进行解码。
旁注,u
是 python 中的默认值 3.
我们可以得到字符串你
的unicode代码点值:
u'你'.encode('unicode-escape')
b'\u4f60'
为什么unicode形式的字符串不等于它的unicode代码点值?
u'你' == u'\x4f\x60'
False
u'你' == u'\u4f60'
False
是的,但是你的比较字符串比较不正确。第一个是一个字节的两个单独的字符,第二个是反斜杠转义的,意思是字面的6个字符\u4f60
.
u'你' == u"\u4f60"
True
编码的字节字符串有两个反斜杠,因为编码对其进行了转义,这使得它即使变回字符串也不等同,除非您也使用 unicode-escape
对其进行解码。
旁注,u
是 python 中的默认值 3.