在Python 3.x中,字符串由Unicode序数项组成.(请参阅下面的语言参考中的引文.)Unicode字符串的内部表示是什么?是UTF-16吗?
字符串对象的项是Unicode代码单元.Unicode代码单元由一个项的字符串对象表示,并且可以包含表示Unicode序数的16位或32位值(序数的最大值在sys.maxunicode中给出,并取决于Python的方式在编译时配置).代理对可能存在于Unicode对象中,并将作为两个单独的项报告.
# -*- coding: utf-8 -*-
a = 'éá??úöüó€'
print type(a) # <type 'str'>
print a # éá??úöüó€
print ord(a[-1]) # 172
Run Code Online (Sandbox Code Playgroud)
这为什么有效?不应该这个SyntaxError: Non-ASCII character '\xc3' in file ...吗?字符串中有unicode文字.
当我用它u作为前缀时,结果是不同的:
# -*- coding: utf-8 -*-
a = u'éá??úöüó€'
print type(a) # <type 'unicode'>
print a # éá??úöüó€
print ord(a[-1]) # 8364
Run Code Online (Sandbox Code Playgroud)
为什么?python中的内部表示有什么区别?我怎么能亲自看到它?:)