Python文件编码

Python文件编码格式声明是以源文件第一二行上的注释内容标识,以下三种用都是可以的:
1.直接进行声明

# coding=<encoding name>

2.解释器声明后进行声明

#!/usr/bin/python
# -*- coding: <encoding name> -*-

3.或者一些编辑器可以识别的形式

#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

实际确定文件编码其实是在源文件头两行搜索下面这个正则表达式。

coding[:=]\s*([-\w.]+)

如果没有进行代码级的编码声明但是文件是以UTF-8形式保存(带有’\xef\xbb\xbf’ 标识)也会被认为是UTF-8编码。如果文件带有UTF-8 BOM标识但是注释声明的不是UTF-8,则会引起错误。

下面的声明都是正确的

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import os, sys
# This Python file uses the following encoding: utf-8
import os, sys

编码声明不在第一二行则会被忽略。

1
2
3
4
#!/usr/local/bin/python
#
# -*- coding: latin-1 -*-
import os, sys

via PEP 0263
-EOF-

《Python文件编码》有一个想法

评论已关闭。