Python編碼 encode和decode的區別

2021-07-24 11:14:42 字數 2060 閱讀 1023

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

-*- coding:

utf-8 -*-

常見編碼介紹:

gb2312編碼:適用於漢字處理、漢字通訊等系統之間的資訊交換

gbk編碼:是漢字編碼標準之一,是在 gb2312-80 標準基礎上的內碼擴充套件規範,使用了雙位元組編碼

ascii編碼:是對英語字元和二進位制之間的關係做的統一規定

unicode編碼:這是一種世界上所有字元的編碼。當然了它沒有規定的儲存方式。

utf-8編碼:是 unicode transformation format - 8 bit 的縮寫, utf-8 是 unicode 的一種實現方式。它是可變長的編碼方式,可以使用 1~4 個位元組表示乙個字元,可根據不同的符號而變化位元組長度。

編碼轉換:

python內部的字串一般都是 unicode編碼。**中字串的預設編碼與**檔案本身的編碼是一致的。所以要做一些編碼轉換通常是要以unicode作為中間編碼進行轉換的,即先將其他編碼的字串解碼(decode)成 unicode,再從 unicode編碼(encode)成另一種編碼。

decode 的作用是將其他編碼的字串轉換成 unicode 編碼,eg name.decode(「gb2312」),表示將gb2312編碼的字串name轉換成unicode編碼

encode 的作用是將unicode編碼轉換成其他編碼的字串,eg name.encode(」gb2312「),表示將gb2312編碼的字串name轉換成gb2312編碼

所以在進行編碼轉換的時候必須先知道 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

宣告如下 code utf 8 因為python 只檢查 coding 和編碼字串,所以你可能回見到下面的宣告方式,這是有些人為了美觀等原因才這樣寫的 coding utf 8 常見編碼介紹 編碼轉換 python內部的字串一般都是 unicode編碼。中字串的預設編碼與 檔案本身的編碼是一致的。所...

Python編碼之encode和decode

宣告如下 code utf 8 因為python 只檢查 coding 和編碼字串,所以你可能回見到下面的宣告方式,這是有些人為了美觀等原因才這樣寫的 coding utf 8 常見編碼介紹 編碼轉換 python內部的字串一般都是 unicode編碼。中字串的預設編碼與 檔案本身的編碼是一致的。所...

Python編碼之encode和decode函式

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