liuliuab1 发表于 2014-12-8 19:05:27

Python 2.7.8 与 Python 3.3.5 对待字符集编码的根本区别

Python 2.7.8 与 Python 3.3.5 对待字符集编码的根本区别

      相信学过 Python 的都知道,Python 2 不支持 Unicode,而直接支持 ASCII,但官方具体是怎么解释的呢?今天,我把“官方英文帮助文件”相应中文翻译部分贴上来,大家互相学习学习。

以下为“Python 2.7.8 官方英文帮助文件”中文翻译部分摘录:

Python 通过 parser (语法分析器) 读取程序。输入到语法分析器的是由 lexical analyzer (词法分析器) 生成的令牌流。本章将描述词法分析器如何把文件分解成令牌。

Python 程序文本使用 7-位 ASCII 字符集。

2.3 版新增:编码声明用来指示字符串字面值,且注释可使用非 ASCII 编码。

为兼容旧版,Python 只会警告说:它发现了 8-位字符;那些警告应被纠正,要么声明明确编码,要么使用转义序列 (若那些字节是二进制数据,而非字符的话)。

Runtime 字符集取决于连接到程序的 I/O 设备,但一般是 ASCII 超集。

未来兼容性注意事项:假定 8-位字符为 ISO Latin-1 (涵盖大多数使用拉丁字母的西方语言的 ASCII 超集) 字符集可能很诱人;但在未来 Unicode 文本编辑器中,这会变得很常见。这些一般会使用 UTF-8 编码 (ASCII 超集),但序数 128-255 字符的使用会很不同。尽管对此问题仍未达成共识,但是,假定为 Latin-1 或 UTF-8 是不明智的;即使当前实现好像有利 Latin-1。这种情况适于源字符集及 Runtime 字符集两者。


以下为“Python 3.3.5 官方英文帮助文件”中文翻译部分摘录:

Python 通过 parser (语法分析器) 读取程序。输入到语法分析器的是由 lexical analyzer (词法分析器) 生成的令牌流。本章将描述词法分析器如何把文件分解成令牌。
Python 会把程序文本读取成 Unicode 代码点;通过编码声明给定源文件编码 (默认值为 UTF-8),请参阅 PEP 3120 了解相关细节。若源文件不能被解码,会引发 SyntaxError (句法错误)。


版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究法律责任。

页: [1]
查看完整版本: Python 2.7.8 与 Python 3.3.5 对待字符集编码的根本区别