首页 > 解决方案 > 为什么python2中'1' == u'1'的结果是True?

问题描述

我在 Linux 中使用 python2.7。来自https://docs.python.org/2/howto/unicode.html。我发现 python 对 中的每个字母使用一个字节str,而在 Unicode 字符串中使用 4 个字节。那么为什么我True在输入后得到'1' == u'1'

python2中的类似事实:

    In [1]: a = {}
    In [2]: a['1'] = 1
    In [3]: a[u'1']
    Out[3]: 1

标签: pythonstringunicode

解决方案


UTF-8 能够使用一到四个一字节(8 位)代码单元对 Unicode 中的所有 1,112,064 个有效字符代码点进行编码。具有较低数值的代码点往往更频繁地出现,使用较少的字节进行编码。它旨在向后兼容 ASCII:Unicode 的前 128 个字符,与 ASCII 一对一对应,使用与 ASCII 具有相同二进制值的单个字节进行编码,因此有效的 ASCII 文本是有效的 UTF-8 -编码的Unicode也是如此。

你可以看到一个这样的例子:

>>> a = u'1'
>>> a.encode('utf-8')
'1'
>>> b = u'ツ'
>>> b.encode('utf-8')
'\xe3\x83\x84'

推荐阅读