在接收Unicode字符的字节序列时,python解释器如何决定解码的编码方案并获得代码点



我使用的是python 2.7。我的终端的编码方案设置为"UTF-8"。Python的默认编码方案是"ascii"。

>>>sys.getdefaultencoding()'ascii'

我在python交互式shell 上键入了以下内容

>>>x=u>>>xu'\xe0'

它打印字符"à"的Unicode代码点。python解释器接收到的字节序列是:

x空格=空格u引号à-第一个字节à-第二个字节引号1111000 100000 111101 100000 1110101 100111 1100010 10100001 100111

现在,python解释器是如何决定应该使用什么编码方案来从字节序列"1100001010100001"中获得Unicode代码点的呢?它是否使用了设置sys.stdin.encoding?

>>>sys.stdin.encoding'UTF-8'

是的,Python检测终端编码(如果可能的话),并使用sys.stdin.encoding作为终端输入,使用sys.stdout.encoding作为终端输出。

在脚本中,将使用源代码中的字节,但Python需要使用特殊注释来了解源代码的编码。因此,如果以下内容以UTF-8格式保存为脚本,您将得到相同的结果。

# coding: utf-8
x = u'à'

最新更新