python中文編碼問題

2021-06-06 19:38:20 字數 1316 閱讀 9495

python

中對中文進行處理的時候,往往涉及到編碼轉換的問題,通常使用以下三種編碼格式:

utf-8

gbkunicode

國內用的比較多的是

gbk格式,

unicode

是乙個很好的編碼方案,將世界各國的語言進行了統一的編碼,美國人後來覺得自己吃了大虧,於是又搞了一種變長編碼的

utf-8

的折衷方案。 在

python

中字串的預設編碼是

unicode

,在進行編碼轉換的時候,一般將

unicode

作為中間編碼,即將其他編碼的字串解碼為

unicode

,再將unicode

編碼為某個編碼格式,

python

中相應的函式為

decode

和  

encode

。 在 python

中文編碼問題中,主要涉及到兩點:檔案的編碼格式和編碼宣告。

在**中字串的預設的編碼格式與**檔案的格式是一致的。在

vim中書寫**的時候,可以通過

set fileencodings

來進行設定,可以同時設定多個編碼,

vim會根據順序來來對檔案進行解碼。在對字串進行解碼之前,應該確認**檔案的編碼格式。

一般在檔案的開始都會用下面的形式進行編碼宣告:

#!/usr/bin/env    python

# -*- coding : gbk - *-

即宣告編碼格式為

gbk,  

-*-是為了美觀,可以去掉。

python

直譯器就會預設採用宣告的編碼進行解碼。在實際程式設計過程中,編碼宣告和檔案的編碼格式最好一致,當二者出現不一致的時候,往往會出現問題,特別是採用不同的編輯器修改後的檔案,編碼往往存在著差異。

當輸入的中文字串存在

gbk編碼和

utf-8

編碼均有可能時,可以通過

try-except

進行巢狀處理,當在某乙個編碼下解碼時沒有觸發

except

的時候,即為該編碼的編碼格式。

在對十六進製制的編碼進行處理的時候,還會出現轉義的問題。在讀入編碼

\***

的過程中,

x  

代表十六進製制字元,

\x會被自動分解成

\ 、

x、 x

和x 的單個字元來處理,此時

\已經被轉義為

\\,這樣就完全偏離了初衷,就可以通過正規表示式就行替換處理。

python中文編碼問題

為什麼會報錯 unicodeencodeerror ascii codec can t encode characters in position 0 1 ordinal not in range 128 本文就來研究一下這個問題。字串在python內部的表示是unicode 編碼,因此,在做編碼轉...

python中文編碼問題

一道非常簡單的python小題,可要搞死我了 題目 輸入某年某月某日,判斷這一天是這一年的第幾天?這題很簡單,但我想要的是這樣的效果 輸入 1月1 輸出 1 也就是說,需要 原本的 片段 a raw input b 月 c a.index b 就是輸入一行字串,找到 月 在哪,然後切割成兩部分 根據...

python 中文編碼問題

python檔案中文和 print 的中文的總結如下 1 coding utf 8 或者 coding gbk 表明這個檔案使用何種編碼 如果出現非acs ii 碼,則必須制定編碼 否則 s 中文 或 s u 中文 都會報錯 2 print是python把 字串丟給作業系統,再丟出之前,要求字元的編...