結合之前遇到的坑以及下面貼的這篇文章, 總結幾種python亂碼解決方案,如果遇到亂碼,不妨嘗試一下?
1,必備
#encoding=utf-8
2,
python程式設計環境編碼
importsysreload(sys)
sys.setdefaultencoding(
'utf8
')
3,不知道神馬編碼的時候用chardet查一下
from chardet import detect #detect(str),引數只能是str,不能是unicode編碼的
ifnot
isinstance(line, unicode):
line = line.decode(detect(line)['
encoding
']).rstrip().lower()
4,mysql 的預設字符集 latin1,latin1是iso-8859-1的別名,有些環境下寫作latin-1,iso-8859-1編碼是單位元組編碼,向下相容ascii
try:
line = line.rstrip().decode("
utf-8
").lower()
except
unicodedecodeerror:
line = line.decode('
latin-1
').rstrip().lower() #
很多網頁採用這種編碼格式,爬取網頁的時候會遇到
5,讀取oracle中文遇到問題的話,設定一下客戶端編碼
importosos.environ[
'nls_lang']
= 'simplified chinese_china.utf8
'
6, 非常好用的codecs, gb2312 < gbk < gb18030,
fo = codecs.open('
/users/baidu/desktop/spark/現代漢語常用詞表.txt
', '
rb', '
gbk'
)fo = codecs.open('
/users/baidu/desktop/spark/現代漢語常用詞表.txt
', '
rb', '
utf8')
fo = codecs.open('
/users/baidu/desktop/spark/現代漢語常用詞表.txt
', '
rb', '
gb18030')
混合編碼的情況最煩人,可以採用try:....unicodedecodeerror:....去嘗試不同解碼方法,或者用chardet先檢測再解碼(但是有些編碼格式字串找不到解碼方式)
總之,讀進來先統一解碼為unicode的格式,寫出去都同一編寫為utf-8格式(除非特殊要求)
附上各種編碼教程
python 編碼問題之終極解決
結合之前遇到的坑以及下面貼的這篇文章,總結幾種python亂碼解決方案,如果遇到亂碼,不妨嘗試一下?1,必備 encoding utf 8 2,python程式設計環境編碼 import sys reload sys sys.setdefaultencoding utf8 3,不知道神馬編碼的時候用...
傳球問題終極解決
原文引自 http blog.sina.com.cn s blog 4d4a4c6401000cy7.html 例 四人進行籃球傳接球練習,要求每人接球後再傳給別人。開始由甲發球,並作為第一次傳球,若第五次傳球後,球又回到甲手中,則共有多少種傳球方式 國2006一類 46 國2006二類 39 a....
python解決中文編碼問題
程式中出現中文,執行的時候出現如下錯誤 syntaxerror non utf 8 code starting with xb1 in file rate.py on line 5,but no encoding declared see for details 導致出錯的根源就是編碼問題。解決方案...