作者:老王
前段时间受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/
前段时间受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/