Conclusion:
如果要在python2.x的文件中使用中文涧团,則必須在第一行或者第二行寫(xiě)上注釋簇抵,否則python2.x會(huì)默認(rèn)使用ASCII編碼允瞧。:
#coding=utf-8
或者:
# -*- coding:utf-8 -*-
重點(diǎn)來(lái)了<蛉怼!千萬(wàn)不能在第一種寫(xiě)法的等號(hào)兩邊加空格J鲈荨痹升!像這樣:
發(fā)現(xiàn)坑的經(jīng)過(guò)
打算把一個(gè)含有中文的長(zhǎng)字符串寫(xiě)到txt文本中去,在定義這個(gè)字符串的時(shí)候就報(bào)錯(cuò)了畦韭。關(guān)鍵代碼段如下:
#coding = utf-8
str_test = "這只是一個(gè)例子\nThis is an example"
報(bào)錯(cuò)信息如下:
SyntaxError: Non-ASCII character '\xe8' in file xx\xxxx.py on line xx, but no encoding declared;
最后更改如下疼蛾,就能正常運(yùn)行了:
#coding=utf-8
str_test = "這只是一個(gè)例子\nThis is an example"
Additional remarks
參考python PEP,這個(gè)magic comment有以下幾種寫(xiě)法:
# coding=<encoding name>
或者:
#!/usr/bin/python
# -*- coding: <encoding name> -*-
或者:
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
其實(shí)只要匹配如下的正則表達(dá)式就可以了:
^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)