【问题标题】:Python 2.7: How many bytes in utf-16 string, created with \U prefix?Python 2.7:使用 \U 前缀创建的 utf-16 字符串中有多少字节?
【发布时间】:2014-01-14 08:54:35
【问题描述】:

我想在我的应用中使用 utf-16。

我知道,\u 用于描述 utf-8 字符(2 个字节)

>>> u'\u1234'
> u'\u1234'

和 \U 用于描述 utf-16 字符(4 个字节)。

>>> u'\U12345678'
> u'\5678'

长字符是否有限制,用\U方式描述?

【问题讨论】:

  • 第二行是语法错误,因为它没有定义有效的 Unicode 代码点。
  • uTF-8 和 UTF-16 不是 2 和 4 字节;两者都有最多 4 个字节的可变长度。

标签: python python-2.7 utf-8 utf-16


【解决方案1】:

\U 只能用于有效的 Unicode 代码点:

>>> u'\U12345678'
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-9: illegal Unicode character
>>> u'\U0001FFFF'
u'\U0001ffff'

Python 2 可以很好地处理这些问题,但这取决于您的构建类型(宽或窄)这算作多少个字符。窄版本使用两个 UTF-16 代码点对字符进行编码。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2011-01-28
    • 2013-03-05
    • 2020-11-22
    • 2014-01-19
    • 2010-10-20
    相关资源
    最近更新 更多