PythonStudy_關於utf-8和GBK編碼


  ASCII是美國信息交換標准代碼,是標准的單字節編碼(8位)。unicode是計算機科學領域的業界標准,2字節(16位)。

  GBK稱漢字內碼擴展規范,雙字節編碼。UTF-8是針對unicode的可變長度編碼,它支持所有國家語言。

  在python編寫程序時,通常指定#conding=utf-8。但是若終端顯示器支持的是GBK,為避免顯示錯誤,需要編碼轉換。

          

  實際上,GBK和UTF-8都是以unicode為基礎的,它們的關系如下:

       

  在用python編程過程中,若涉及到中文,且需要將中文代碼由UTF-8轉換成GBK時,具體操作如下:

  python2.7版本,轉換過程為:UTF-8 —> Unicode —> GBK 。如下:

#coding=utf-8
name = '名字'    #這里是UTF-8
#先將轉換UTF-8轉換成unicode
name_unicode = name.decode('UTF-8')    #decode需要指明現在的類型
#再將unicode轉換成GBK
name_GBK = name_unicode.encode('GBK')    #encode需要指明需要轉換成的類型
#轉換完成,在終端可以正常顯示
print(name_GBK)

  python3.6版本,可直接將UTF-8轉換成GBK。如下:

#coding=utf-8
name = '名字'    #這里是UTF-8
#直接將UTF-8轉換成GBK
name_GBK = name.encode('GBK')    #encode需要指明需要轉換成的類型
#轉換完成,在終端可以正常顯示
print(name_GBK)

  另外,Windows自帶編碼轉換功能,可以自動將unicode轉換成任何需要的編碼形式。

  所以,在python2.7版本下,可以將UTF-8轉換成unicode后,省略unicode轉成GBK環節。如下:

#coding=utf-8
name = '名字'    #這里是UTF-8
#將UTF-8轉換成unicode
name_unicode = name.decode('UTF-8')    #decode需要指明現在的類型
#省略UTF-8轉碼GBK環節,由Windows自動完成。
print(name_unicode)

  但是,如上做法在python3.6版本中會出現錯誤,因為python3之后的版本中移除了unicode類型、默認utf-8。慎用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM