Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Mac OS X python与CentOS Linux python对字符串中的转义有不同的解释?_Python_Macos_Unicode_Centos - Fatal编程技术网

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

为什么Mac OS X python与CentOS Linux python对字符串中的转义有不同的解释?,python,macos,unicode,centos,Python,Macos,Unicode,Centos,两个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 m

两个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

$python
Python 2.6.7(r267:88850,2011年7月31日,19:30:54)
[GCC 4.2.1(基于苹果公司5658版本)(LLVM版本2335.15.00)]关于达尔文
>>>u'\U00000020'
u“
>>>u'\U00000065'
你
>>>u'\U0000FFFF'
u'\uffff'
>>>u'\U00010000'
u'\U00010000'
>>>len(u'\U00010000')
2.
>>>作战需求文件(u'\U00010000')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:ord()应为字符,但找到长度为2的字符串

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

在OSX上尝试
unichr(0x10000)
,看看是否在引用窄版本时出错。另请参阅,特别是IVH的答案


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

这是一个好问题。可能就是这样。也可以参阅本文:这是正确的答案。我得到了关于“窄版本python”的错误在Mac OS X上sys.maxunicode返回65535@user802500:我可能有点误解,但在这种情况下,Mac OS的构建不是很窄吗?你是对的。我在回复帖子时翻了翻哪个操作系统在做什么。现在已经编辑了。
$ python
Python 2.6.7 (r267:88850, Jul 31 2011, 19:30:54) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
>>> u'\U00000020'
u' '
>>> u'\U00000065'
u'e'
>>> u'\U0000FFFF'
u'\uffff'
>>> u'\U00010000'
u'\U00010000'
>>> len(u'\U00010000')
2
>>> ord(u'\U00010000')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found