歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python 編解碼【初探】

Python 編解碼【初探】

日期:2017/3/1 10:52:13   编辑:Linux編程

編碼是為了兼容字符集之間的通用性,通常可以編碼的地方有:
1、系統默認編碼
2、程序運行環境的編碼
3、源碼文件自身的編碼
4、程序中的字符串編碼

對於python也是一樣的:

通常中文操作系統的編碼都是gbk

python運行環境默認的編碼是ascII

源文件的編碼可以自己確定【# -*- coding: gbk -*-】,不設置就是默認的python編碼

程序內容的編碼可以通過python提供的幾個函數來進行轉換。【如unicode】

通常python編解碼的過程是這樣的:

接受到一個字符--如果預先沒有編碼則使用unicode編碼--》如果和系統的字符集不一致-->則隱性轉換為系統默認的字符集--》使用系統的編碼方式解碼字符串

python中程序內部編解碼的方式:

  1. >>s='中文'
  2. >>type(s) #查看s的字符類型
  3. >>s #查看字符原碼
  4. >>print s #調用系統字符集解碼
  5. >>unicode(s,'gbk') #解碼為unicode
  6. >>type(s)
  7. >>s
  8. >>print s
  9. >>s.encode('utf-8') ##編碼為utf8
  10. >>type(s)
  11. >>s
  12. >>print s
  13. >>s.decode('utf-8') ##解碼utf8,默認的編碼方式是unicode
  14. >>type(s)
  15. >>s
  16. >>print s

指定的編碼字符只能用指定的編碼方式解碼,否則會報錯。所有字符集中python的中間字符集是unicode。即如果gbk想轉換為utf-8的路徑不是直接轉換,而是gbk->unicode->utf-8.不能直接gbk->utf-8

另外對於一些包含特殊字符的編碼,直接解碼可能會報錯,可以使用對於的參數來設置。如
s.decode('utf-8',ignore)忽略其中有異常的編碼,僅顯示有效的編碼
s.decode('utf-8',replace)替換其中異常的編碼為?,這個相對來可能一眼就知道那些字符編碼出問題了。

Copyright © Linux教程網 All Rights Reserved