![]() |
1
6
不幸的是,由于历史原因,在Python3.0之前,有两种字符串类型。
byte strings (
在Python3.0中统一之前,有两种方法可以声明字符串文字:
你看到的原因
所以在python 2.x中,如果需要处理unicode,就必须显式处理。请看一下在python中处理unicode的介绍: Unicode HOWTO |
![]() |
2
7
当你说:
你 没有 Unicode字符串。您有一个以(大概)UTF-8为单位的字节字符串。这不是同一件事。Unicode字符串是Python中单独的数据类型。通过使用正确的编码对字节串进行解码,可以获得Unicode:
或者在具有正确编码声明的源文件中使用Unicode文本
Unicode字符串将在执行此操作时执行所需的操作。
|
![]() |
3
4
对于任何类型的“unicode字符串”,都没有正确的直接方法。 即使是python的“unicode”utf-16字符串也有可变长度的字符,因此,不能只使用ustring[:5]进行剪切。因为某些Unicode代码点可能使用多个“字符”,即代理项对。 所以如果你想切5个 代码点 (注意这些不是 文字 )因此,您可以分析文本,请参见 http://en.wikipedia.org/wiki/UTF-8 和 http://en.wikipedia.org/wiki/UTF-16 定义。所以需要使用一些位掩码来计算边界。 而且你仍然没有得到字符。比如说。单词“×_××_×”--希伯来语和平“shalom”由4个字符和6个码位字母“shin”、元音“a”字母“lamed”、字母“vav”和元音“o”以及最后一个字母“mem”组成。 所以 性格
|