Encoding python 2.x中商标符号的长度

Encoding python 2.x中商标符号的长度,encoding,python-2.7,Encoding,Python 2.7,为什么 在Python2.x中 如何快速将其修复为一个字符(如Python 3.x?您的终端编码设置为UTF8。您正在计算编码字符中的字节数: >>> len('™') >>> 3 使用unicode计数字符而不是字节: >>> '™' '\xe2\x84\xa2' >>> len('™') 3 或从终端编码解码: >>> u'™' u'\u2122' >>> len(u'™') 1

为什么

在Python2.x中


如何快速将其修复为一个字符(如Python 3.x?

您的终端编码设置为UTF8。您正在计算编码字符中的字节数:

>>> len('™')
>>> 3
使用unicode计数字符而不是字节:

>>> '™'
'\xe2\x84\xa2'
>>> len('™')
3
或从终端编码解码:

>>> u'™'
u'\u2122'
>>> len(u'™')
1
在Python3中,字符串是
unicode
值,Python2
str
类型重命名为
byte
(您的输入基本上与
b'相同)™'3)

您可能想了解Python和Unicode:

  • 内德·巴奇尔德

  • 乔尔斯波尔斯基

>>> import sys
>>> '™'.decode(sys.stdin.encoding)
u'\u2122'