python 編碼問題之終極解決

2022-07-15 22:45:23 字數 1276 閱讀 5592

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

1,必備

#encoding=utf-8

2,python程式設計環境編碼

import sys

reload(sys)

sys.setdefaultencoding('utf8')

3,不知道神馬編碼的時候用chardet查一下

from chardet import detect  # detect(str),引數只能是str,不能是unicode編碼的

if not 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 os

os.environ['nls_lang']

= 'simplified chinese_china.utf8'

6, 非常好用的codecs, gb2312 < gbk < gb18030,

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 sysreload sys sys.setdefaultencoding utf8 3,不知道神馬編碼的時候用c...

傳球問題終極解決

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