標籤:分享 編碼 等等 儲存檔案 位元組 操作 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)