在
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把 字串丟給作業系統,再丟出之前,要求字元的編...