Python編碼介紹 encode和decode

2021-07-12 07:52:53 字數 1771 閱讀 4561

,宣告如下:

# code

:utf-8

因為python 只檢查 #、coding 和編碼字串,所以你可能回見到下面的宣告方式,這是有些人為了美觀等原因才這樣寫的: #

-*-coding

: utf-8 

-*-

常見編碼介紹:

編碼轉換:

python內部的字串一般都是 unicode編碼。**中字串的預設編碼與**檔案本身的編碼是一致的。

所以要做一些編碼轉換通常是要以unicode作為中間編碼進行轉換的,即先將其他編碼的字串解碼(decode)成 unicode,再從 unicode編碼(encode)成另一種編碼。

所以在進行編碼轉換的時候必須先知道 name 是那種編碼,然後 decode 成 unicode 編碼,最後載 encode 成需要編碼的編碼。當然了,如果 name 已經就是 unicode 編碼了,那麼就不需要進行 decode 進行解碼轉換了,直接用 encode 就可以編碼成你所需要的編碼。值得注意的是:對 unicode 進行編碼和對 str 進行編碼都是錯誤的。

具體的說就是:

如果在utf-8檔案中,則這個字串就是 utf-8編碼的。它的編碼取決於當前的文字編碼。當然了,gb2312文字的編碼就是gb2312。

要在同乙個文字中進行兩種編碼的輸出等操作就必須進行編碼的轉換

,先用decode將文字原來的編碼轉換成unicode,再用encode將編碼轉換成需要轉換成的編碼。

eg:由於內建函式 open() 開啟檔案時,read() 讀取的是 str,讀取後需要使用正確的編碼格式進行 decode()。write() 寫入時,如果引數是 unicode,則需要使用你希望寫入的編碼進行 encode(),如果是其他編碼格式的 str,則需要先用該 str 的編碼進行 decode(),轉成 unicode 後再使用寫入的編碼進行 encode()。如果直接將 unicode 作為引數傳入 write() ,python 將先使用源**檔案宣告的字元編碼進行編碼然後寫入。

# coding

:utf-8

fp1 

=open

('test.txt'

,'r'

)info1 

=fp1

.read()

# 已知是 gbk 編碼,解碼成 unicode

tmp 

=info1

.decode

('gbk'

)fp2 

=open

('test.txt'

,'w'

)# 編碼成 utf

-8 編碼的 str

info2 

=tmp

.encode

('utf-8'

)fp2

.write

(info2

)fp2

.close()

獲取編碼的方式:

判斷是 s 字串否為unicode,如果是返回true,不是返回false :

isinstance(s

,unicode)

下面**可以獲取系統預設編碼:#!

/usr

/bin

/env python

#coding

=utf-8

import

sysprint

sys.

getdefaultencoding()

python編碼介紹及中文亂碼過濾

初學python程式設計,中文編碼在任何一種程式語言裡都是很坑的事情,python也難逃劫難 最近專案需要使用python 對比兩個json檔案的某些字段是否有diff 涉及到用json.load 載入乙個json檔案,但是如果檔案中有中文亂碼的時候,json.load會載入失敗,需要過濾掉這些非法...

字型編碼介紹

ascii碼 ascii碼一共規定了128個字元的編碼,對英語字元與二進位制位之間的關係,做了統一規定。這128個符號 包括32個不能列印出來的控制符號 只占用了乙個位元組的後面7位,最前面的1位統一規定為0。非ascii編碼 不同的國家有不同的字母,哪怕都使用256個符號的編碼方式,代表的字母卻不...

python 位元組編碼 python編碼

參考文章 python編碼 encode 將unicode字元按照編碼規則 如utf 8 編成位元組序列。a u 測試 a.encode utf 8 xe6 xb5 x8b xe8 xaf x95 python解碼 decode 將位元組序列按照編碼規則 如utf 8 解釋成unicode。a b ...