现在的位置: 首页 > 综合 > 正文

Python与中文

2013年09月17日 ⁄ 综合 ⁄ 共 1227字 ⁄ 字号 评论关闭
作者:老王

前段时间受Erlang诱惑,疏远了Python。不过我已经迷途知返,今天聊聊Python与中文。

先看看Python3.0里面的情况:

首先,创建文件c:/chinese.py,文件编码是utf-8,文件内容如下:

print("中文")

在IDLE里执行:

>>> import sys
>>> sys.path.append("c://")
>>> import chinese
中文

一切都很完美!

再试试其它编码,把chinese.py的文件编码改成gbk,再执行上面的操作,结果报错:

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
    import chinese
File "c:/chinese.py", line 1
SyntaxError: Non-UTF-8 code starting with '/xd6' in file c:/chinese.py on line 1,
but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

看来,要想一个办法声明编码才行,按照PEP0263的介绍修改chinese.py文件内容:

# coding=gbk
print("中文")

再执行上面的操作,一切顺利。

很多时候,你可能会发现其它形式的编码声明方式,如下:

# -*- coding: <encoding name> -*-
# vim: set fileencoding=<encoding name> :

这两种方式同样符合PEP0263的要求,并且在设定了python编码的同时还顺带设定了emacs / vim的编码。

再看看Python2.6里面的情况:

一样的chinese.py文件,如果不声明编码的话,不管是utf-8还是gbk,都会报错:

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
    import chinese
File "c:/chinese.py", line 1
SyntaxError: Non-ASCII character '/xd6' in file c:/chinese.py on line 1,
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (chinese.py, line 1)

总结:

使用非ASCII字符时,在Python3.0里面,如果是utf-8编码,可以不用声明编码。在Python2.X里面,不管什么编码都要声明编码!

========================================

Python资料:

http://wiki.woodpecker.org.cn/moin/
http://www.elias.cn/Develop/Python/

抱歉!评论已关闭.