以上是test.py,功能是將gbk編碼的字符串轉為utf-8.編解碼是待驗證功能
測試:
1——使用gbk編碼輸入測試輸出是否是utf-8類型。
具體怎么驗證是否是utf-8呢?tricks...
執行:python test.py 2>result
檢查result:cat result,如下
驗證編碼:
方法1: iconv -f utf-8 -t gb2312 result 結果如下:
如果使用iconv -f gb2312 -t utf-8 result 結果如下
證明結果編碼是gbk,正常功能ok
方法2:rz result 到本地,使用ie打開該文件,瀏覽器會自動識別編碼,此時看看瀏覽器編碼類型即可
2--使用utf-8字符串輸入
如何構造utf-8字符串?
方法1:使用剛才的輸出作為輸入
方法2:使用vi 輸入漢字,set encoding=gb2312,然后執行iconv -f gb2312 -t utf-8 gbk >utf-8
驗證:執行python test_encode.py(內容如下)
結果失敗
python編解碼程序詳解:[下面是轉載zz】
字符串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉換成unicode編碼。
encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉換成gb2312編碼。
因此,轉碼的時候一定要先搞明白,字符串str是什么編碼,然后decode成unicode,然后再encode成其他編碼
代碼中字符串的默認編碼與代碼文件本身的編碼一致。
如:s='中文' 如果是在utf8的文件中,該字符串就是utf8編碼,如果是在gb2312的文件中,則其編碼為gb2312。【zz end】
這里的 str1 =str.decode('gbk','ignore').encode('utf-8')的實際轉換過程是:
1、將編碼是gbk的str decode 為unicode,
2、然后將unicode 編碼 encode為utf-8
如果str不是gbk,則會出現
這樣的問題