Python編碼之encode和decode

2021-07-22 07:17:08 字數 1777 閱讀 3366

,宣告如下:

# 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

sys

print

sys.

getdefaultencoding()

Python編碼之encode和decode函式

python爬取網頁之後返回的資料型別時byte型別,當你想要再爬取網頁上的其他資料時,就需要解碼為字串,在獲取相應資料的url,在寫入檔案中,所以我們就一定要搞清楚你爬取網頁的編碼格式然後用相應的格式來解碼。這時就需要用到 decode函式,也就是把爬取到的byte型別資料轉換為字串。直接看下面的...

Python編碼 encode和decode的區別

code utf 8因為python 只檢查 coding 和編碼字串,所以你可能回見到下面的宣告方式,這是有些人為了美觀等原因才這樣寫的 coding utf 8 常見編碼介紹 gb2312編碼 適用於漢字處理 漢字通訊等系統之間的資訊交換 gbk編碼 是漢字編碼標準之一,是在 gb2312 80...

編碼(encode)問題

utf 8 utf 8 包含了世界上所有國家需要用到的字元,是國際編碼,通用性強 gbk編碼方案確定後,儘管編碼結果必然確定,但解碼過程和結果卻不見得唯一。解碼演算法一般採用,按順序對資訊位元流做子串匹配的策略,因此為了消除匹配的歧義性,任意兩個原始字元所對應的二進位制編碼串,相互都不得是字首。反過...