Python 編碼總結

2021-07-14 16:49:34 字數 1230 閱讀 8391

python裡面中文亂碼問題乙個讓初學者很頭痛的問題,自己在做專案的時候也遇到不少的編碼問題,在這裡做乙個小小的總結。

1. 編碼轉換

:python內部使用unicode作為預設編碼來表示字串(string)。在編碼轉換的過程中,將unicode作為中間編碼進行過度是乙個本質的思想。

fromcode –> unicode –> tocode

從fomecode轉成unicode的過程叫做decode();

從unicode轉換成tocode 的過程叫做encode();

例如:gbk –> unicode –> utf-8

寫法:str.decode(『gbk』).encode(『utf-8』)

注:已經是unicode編碼的字串不能進行decode。

2. 中文亂碼問題

python缺省會把源**用ascii(american standard code for information interchange)編碼進行處理,在只使用英文本元的情況下,不會出現問題,但是如果用了中文,就會出現報錯(syntaxerror: non-ascii character),因為用ascii編碼方式是無法處理中文的。

預設處理方式:源** –> ascii –> unicode –> ascii –> 結果

以下的**檢視預設的編碼方式:

import sys

print sys.getdefaultencoding()

因此,通常我們會在源**的第一行注釋# -- coding: utf-8 --。表示設定編輯器的預設儲存為 utf8 格式。這樣在編輯**的時候就不用考慮編碼轉換問題。

同樣也可以對python的全域性進行編碼設定:

import sys

sys.setdefaultencoding('utf-8')

3. 外部檔案讀取

從外部讀取檔案時也會造成中文亂碼的問題,比如從excel、text中讀取檔案,需要注意讀取的檔案的編碼格式,根據檔案本身的編碼格式先做decode成unicode,然後再做處理。

判斷字串的編碼方式:

import chardet

chardet.detect("編碼")

##

python 編碼總結

1.如果py檔案裡面不指定原始檔需要用到的編碼格式的話,python解析器就會用預設的編碼去解析,一般是ascii,所以如果此時原始檔有中文的話就會報錯,syntaxerror non ascii character.因此一定要顯示指定編碼格式,方法是在py檔案第二行加入此句 coding gbk ...

python 編碼問題總結

python 編碼問題總結 2010 05 12 15 07 問題一 當python中間處理非ascii編碼時,經常會出現如下錯誤 unicodedecodeerror ascii codec can t decode byte 0x?in position 1 ordinal not in ran...

python 編碼方式總結

python 編碼方式總結 python 內部使用 unicode 編碼 t 北京 t xe5 x8c x97 xe4 xba xac 1 urllib.quote t 將t轉換為 16進製制編碼 e5 8c 97 e4 ba ac urllib.unquote e5 8c 97 e4 ba ac ...