探究 encode 和 decode 的使用問題(Python)

來源:互聯網
上載者:User

標籤:分享   編碼   等等   儲存檔案   位元組   操作   color   出現   樣本   

很多時候在寫Python程式的時候都要在頭部添加這樣一行代碼

#coding: utf-8

或者是這樣

# -*- coding:utf-8 -*-

等等

這行代碼的意思就是設定同一編碼格式為utf-8

電腦中儲存資料的編碼方式多種多樣, 常用的有 unicode, utf-8, gbk, 等等

在Windows系統下,文字檔預設儲存的格式應該是gbk

在以一種編碼格式儲存檔案時,應該使用相同的編碼進行解析此檔案, 不然可能會出現亂碼情況

今天就是想記錄一下我在寫Python程式時,在解析字串字串時何時使用decode, 何時使用encode

通常從非unicode編碼轉換為unicode編碼使用decode(解碼),相反從unicode編碼轉換為非unicode編碼使用encode(編碼)

#coding: utf-8L = [‘你好‘]print L  

輸出

現在是utf-8編碼, 一個漢字佔3個位元組

使用decode進行解碼,將 “你好” 的編碼轉換為unicode

#coding: utf-8L = [‘你好‘]print [L[0].decode(‘utf-8‘)] 

輸出

可以看到成功轉化為unicode編碼, 並且一個漢字佔2個位元組

那我現在想讓utf-8編碼的 “你好” 轉換為gbk該如何操作呢?

這樣試一下

#coding: utf-8L = [‘你好‘]print [L[0].encode(‘gbk‘)]  #錯誤樣本

出現了錯誤

正確的方式就是先將 utf-8 使用decode轉換為 unicode , 在將 unicode 使用encode轉換為想要的編碼gbk

#coding: utf-8L = [‘你好‘]print [L[-1].decode(‘utf-8‘).encode(‘gbk‘)]   # utf-8 -> unicode -> gbk

輸出

成功轉化為gbk編碼, 並且一個漢字佔2個位元組

總結

(非unicode編碼).decode(‘非unicode‘)     轉換為unicode

(unicode編碼).encode(‘非unicode‘)        轉換為非unicode

如果想要從一種非unicode編碼轉換為另外一種非unicode編碼, 需要藉助unicode作為跳板先進行decode, 再進行encode

本節完......

 

探究 encode 和 decode 的使用問題(Python)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.