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