使用Python3来减少处理Unicode时的痛苦,我可以打印UTF-8字符:
>>> print (u'\u1010')
တ
但是当尝试用UTF-16做同样的事情时,让我们说U+20000
,u'\u20000'
是初始化角色的错误方法:
>>> print (u'\u20000')
0
>>> print (list(u'\u20000'))
['\u2000', '0']
它改为读取2个UTF-8字符。
我也尝试过大U,即u'\U20000'
,但它会抛出一些转义错误:
>>> print (u'\U20000')
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-6: truncated \UXXXXXXXX escape
字符串外面的大U也不起作用:
>>> print (U'\u20000')
0
>>> print (U'\U20000')
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-6: truncated \UXXXXXXXX escape
答案 0 :(得分:3)
这些不是UTF-8和UTF-16文字,而只是unicode
文字,它们的含义相同:
>>> print(u'\u1010')
တ
>>> print(u'\U00001010')
တ
>>> print(u'\u1010' == u'\U00001010')
True
第二种形式只允许您指定U + FFFF以上的代码点。
如何以最简单的方式执行此操作:将源文件编码为UTF-8(或UTF-16),然后您只需编写u"တ"
和u""
。
UTF-8和UTF-16是将这些编码为字节的方法。技术上,UTF-8是"\xf0\xa0\x80\x80"
(我可能写成u"".encode("utf-8")
)。
答案 1 :(得分:2)
正如@Mark Ransom所述,Python的UTF16 \U
表示法需要八个字符才能正常工作。
因此,要使用的Python代码是:
u"\U00020000"
列于this page:
Python源代码u&#34; \ U00020000&#34;