The Interpreter and ... 之 Source Code Encoding

在python的源代码文件中,允许使用不同的字符集编码而并非只是ASCII。最好的设置方法是在“#!”之后再多设置一个特殊的行,用来定义源代码文件的编码,就像下面这样:

# -*- coding: encoding -*-

通过上诉方式的定义,所有在源代码文件中的字符将都会被看做是(treated  as)指定的编码方式去编码,同时该源文件就允许立即被写入选中的编码的Unicode字符字面量。Python所允许的编码方式,你可以在Python的库参考中找到,在 codecs 这一章节中。

举个例子,为了在文件中可以使用包含“Euro currency symbol”(欧元货币符号)的Unicode字面量(literals),那么就可以使用 ISO-8859-15 编码方式,“Euro symbol”(欧元符号)的顺序值是 164。下面这个脚本的作用将会打印出8364这个值(“Euro symbol”对应的(corresponding)Unicode字符序号(codepoint)),然后退出:

# -*- coding: iso-8859-15 -*-
currency = u"€"
print ord(currency)


如果你的编辑器支持将文件存储成 UTF-8 编码格式,同时带有 UTF-8 的顺序标记(order  mark)(或者称做:BOM头),那么你就可以使用这种方式来代替编码方式定义的方式。IDLE(python下的一种IDE)就支持这种特性(capability),当资源的编码选项、或者一般配置、或者默认被设置成UTF-8。值得注意的是,这种签名式的(signature)编码方式指定,在python的老版本中(2.2或者更早的版本)是不能够被理解的(not understood),同样的也不能被不支持在脚本文件中使用“#!”的操作系统,也就是说只有Unix系统才支持!


通过使用UTF-8编码(通过在源代码中定义编码或者采用签名式的方式指定),那么世界上大部分的字符可以被同时使用(can be used simultaneously)在字符串的字面量上或者是注释中。但是,在标示符中使用非ASCII字符则是不允许的!为了可以恰当的(properly)展示这些字符,你的编辑器必须能够识别出(recognize)该文件是采用UTF-8编码的,同样的,你的编辑器还必须具有一种字体能够支持文件中所有的字符显示!


你可能感兴趣的:(The Interpreter and ... 之 Source Code Encoding)