通常python3里面如果有中文,在不連接其他設備和程序的情況下,報錯信息大致如下:
SyntaxError: Non-UTF-8 code starting with '\xd6' in file
這里面的\xd6可以是其他編碼,代表的是你程序里第一個中文的前兩位編碼
原因:你的程序里變量的編碼方式和解釋器解析的編碼方式不一致,而從解釋器的報錯信息可以看出,解釋器的編碼是utf-8
解決方法:使程序里變量的編碼方式和解釋器解析的編碼方式保持一致
那么問題來了,兩個編碼方式為什么不一樣呢,網上非常流行的解釋:有中文就要加#coding:gbk,因為中文需要gbk來編碼;這個解釋是錯的,因為utf-8也可以對中文編碼所以問題在於我們程序里的變量編碼方式不是utf-8
我們pycharm中變量的編碼方式設定路徑:file-settings-editor-file encodings-project encoding(默認被選成了GBK,原因我也不知道)
解決方法一:如果我們把項目的編碼方式設定為utf-8,那么變量的編碼方式就是utf-8 ,python的默認編碼方式也是utf-8,那就可以正常輸出中文什么其他代碼都不用加
s="中文" print(s)
輸出
中文
解決方法二:在代碼上方加一行#coding:gbk;這就是在告訴編譯器,我變量的編碼方式是GBK,你要用GBK來解碼,同樣也可以解決問題
#coding:gbk s="中文" print(s)
輸出
中文
問題解決了,但是要注意:如果用第一種方式解決問題,那你的py文件是utf-8編碼,如果用第二種方式解決問題,那么你的py文件是gbk編碼
這個在寫文件的時候,不會對寫入值有影響,寫入值受f=open(path,mode,encoding)里面的encoding控制,要尤其注意
注:python2的報錯與python3有些區別,python2默認的編解碼方式是ASCII,所以如果有中文就要在文件頭加上#coding:utf-8