为什么Mac OS X python与CentOS Linux python对字符串中的转义符有不同的解释?

2024-03-29 15:05:39 发布

您现在位置:Python中文网/ 问答频道 /正文

两个python解释器会话。第一个来自CentOS上的python。第二个来自macosx10.7上的内置python。为什么第二个会话从转义序列中创建长度为2的字符串,然后出错?在

$ python
Python 2.6.6 (r266:84292, Dec  7 2011, 20:48:22) 
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u'\U00000020'
u' '
>>> u'\U00000065'
u'e'
>>> u'\U0000FFFF'
u'\uffff'
>>> u'\U00010000'
u'\U00010000'
>>> len(u'\U00010000')
1
>>> ord(u'\U00010000')
65536

^{pr2}$

Tags: 字符串onhattypehelpred解释器内置
1条回答
网友
1楼 · 发布于 2024-03-29 15:05:39

我对此一点也不确定,但可能是您的macosx系统使用了python的“窄构建”,它表示unicode,只有16位用于unicode的内部编码,并将2**16以上的unicode代码点表示为一个字符对(这将解释len(u'\U00010000') == 2)。在

在OSX上尝试unichr(0x10000),看看在引用窄版本时是否出现错误。另见What encoding do normal python strings use?,尤其是IVH的回答。在

即使系统上默认的python使用窄版本,也可以重新编译python以使用宽版本。在

相关问题 更多 >