亂碼產生的原因是python在讀取時預設解碼方式是用作業系統編碼,如果和儲存時的編碼方式不一樣,就會出現亂碼
比如以下片段,檔案儲存格式是utf-8
#coding=utf-8
print'是
'#輸出亂碼
因為windows預設的編碼方式是gbk,python檔案儲存時使用了utf-8,在讀取時,python使用gbk的編碼表去解utf-8編碼的位元組碼,因為gbk與utf-8編碼不相容,自然出現了亂碼問題
解決方法:
1.直接使用 u'是' 形式,指明以unicode編碼,解碼方式會以頂部 #coding定義的編碼方式,如果不寫,以作業系統當前編碼方法,建議寫上#coding,因為要讓作業系統編碼和原始檔編碼經常會不一樣。推薦使用這種方式
2.輸出時指定解碼方法 print '是'.decode("utf8") ,必須和儲存的編碼一致,忽略#coding的定義
3.將#coding 和儲存編碼改為和作業系統一樣的編碼,就可以直接print '是' 正常輸出,也不推薦,因為需要事先知道作業系統編碼,複製到其他電腦上,作業系統編碼不一樣就會出錯
#coding=gbk
print u'是'
#方法1
print'是
'.decode("
gbk") #
方法2print'是
'#方法3
注意:#coding指明的編碼必須和儲存的編碼一樣,不然1,3方法都會產生錯誤,原因也是儲存編碼和讀取編碼不一致。一般ide能夠自動根據#coding儲存檔案
php 亂碼 問題解決辦法
php亂碼問題解決辦法 必須使使用的 資料庫 文字編輯 瀏覽器 資料獲取 編碼格式一致。如設定成 utf 8的方法為 1.資料庫建立時設定 字符集為utf 8 2.在專案屬性 或檔案屬性 文字檔案編碼處設定成utf 8 如果沒用ide工具編寫,可以不設定此項 3.設定網頁顯示編碼格式 header ...
freemarker 中文亂碼問題解決辦法
解決辦法一 通過修改配置檔案freemarker.properties,修改預設編碼 locale zh cn default encoding gbk number format date format yyyy mm dd time format hh mm ss datetime format...
Rails 中文編碼亂碼問題解決辦法
中文亂碼永遠是心頭一痛。最近學習rails,又遇到了久違的中文亂碼問題。如下是本人的解決方法 編碼選擇 除非因為歷史遺留原因,要保證所有的編碼全部為utf 8,盡量不要嘗試gbk編碼,否則以後出現問題的時候,會有你好看的。編輯器編碼 將ruby原始檔盡量使用utf 8編碼,這個在一些高階的文字編輯器...