python 編碼問題之終極解決

2021-07-25 16:44:59 字數 1583 閱讀 1711

結合之前遇到的坑以及下面貼的這篇文章, 總結幾種python亂碼解決方案,如果遇到亂碼,不妨嘗試一下?

1,必備

#

encoding=utf-8

2,

python程式設計環境編碼

import

sysreload(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中文遇到問題的話,設定一下客戶端編碼

import

osos.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 導致出錯的根源就是編碼問題。解決方案...