Fra*_*ova 4 encoding python-2.7
为什么是
>>> len('™')
>>> 3
Run Code Online (Sandbox Code Playgroud)
在python 2.x?
如何快速修复它被视为一个字符(如Python 3.x?)
您的终端编码设置为UTF8.您正在计算编码字符中的字节数:
>>> '™'
'\xe2\x84\xa2'
>>> len('™')
3
Run Code Online (Sandbox Code Playgroud)
使用unicode计算字符而不是字节:
>>> u'™'
u'\u2122'
>>> len(u'™')
1
Run Code Online (Sandbox Code Playgroud)
或解码来自终端的编码:
>>> import sys
>>> '™'.decode(sys.stdin.encoding)
u'\u2122'
Run Code Online (Sandbox Code Playgroud)
在Python 3中,字符串是unicode值,Python 2 str类型被重命名为byte(您的输入与b'™'Python 3中的输入基本相同).
您可能想要阅读Python和Unicode:
Ned Batchelder的实用Unicode
绝对最低每个软件开发人员绝对必须知道关于Unicode和字符集(没有任何借口!)作者:Joel Spolsky