python unicode編碼和中文相互轉化

2021-10-16 12:36:02 字數 3359 閱讀 4843

如圖:

p =

"\u65e0\u6cd5\u8bc6\u522b\u5c5e\u6027\u201cphysical_network, network_type\u201d"

print p.encode(

'utf-8'

).decode(

'unicode_escape')》

無法識別屬性「physical_network, network_type」

p ="\u65e0\u6cd5\u8bc6\u522b\u5c5e\u6027\u201cphysical_network, network_type\u201d"

p2 =

"\u8d26\u6237\u8bbe\u5907"

print p2.decode(

'unicode_escape'

).encode(

'utf-8'

)print p.decode(

'unicode_escape'

).encode(

'utf-8'

)# 將字串p 不管之前什麼格式,先解碼成python內部的unicode編碼集,讀取檔案時再反向轉成原格式,然後再進行utf-8 編碼

print p2.decode(

'unicode_escape'

).encode(

'utf-8'

)print p.encode(

'utf-8'

).decode(

'unicode_escape'

)# 將字串p 編碼成utf-8格式,再進行碼成python內部的unicode編碼集,讀取檔案時再反向轉成原格式utf-8.

print p.decode(

'unicode_escape'

)print

isinstance

(p2,

unicode

)賬戶裝置

無法識別屬性「physical_network, network_type」

賬戶裝置

無法識別屬性「physical_network, network_type」

無法識別屬性「physical_network, network_type」

false

unicode_escape編碼集,將unicode記憶體編碼值直接儲存.

也就是說,將unicode記憶體編碼值進行儲存,讀取檔案時,再反向轉換回來

在python中,unicode是記憶體編碼集,一般我們將資料儲存到檔案時,需要將資料先編碼為其他編碼集,比如utf-8、gbk等

如圖中例子的兩處說明:

將字串p 不管之前什麼格式,先解碼成python內部的unicode編碼集,讀取檔案時再反向轉成原格式,然後再進行utf-8 編碼

將字串p 編碼成utf-8格式,再進行碼成python內部的unicode編碼集,讀取檔案時再反向轉成原格式utf-8.

所以最後 這兩個雖然encode和decode 換了位置,但輸出結果相同

位元組串是給計算機看的, unicode是給人看的,做資料傳輸時,先encode編碼成位元組串,進行傳輸,當我們拿到後,需要decode解嗎成unicode進行操作

pp =

"你好,這個世界"

ppp = json.dumps(pp)

print ppp

》"\u4f60\u597d\uff0c\u8fd9\u4e2a\u4e16\u754c"

#decode(『utf-8』) 把 utf-8 轉化為 unicode 編碼

#encode(『utf-8』) 把 unicode 轉化為 utf-8 編碼

encode:編碼

decode:解碼

python內部編碼方式為unicode,decode將其他編碼方式轉換成unicode編碼方式,encode將unicode轉換成其他編碼方式。

因此unicode相當於乙個中**(1

)decode-

>

unicode

->encode (2

)encode-

>

unicode

->decode

3. decode和encode的區別

為什麼會出現亂碼呢?因為在檔案存的時候格式和讀取時候格式不一致就會亂碼了。

字串在python內部的表示是unicode編碼,也可以說現在的記憶體是unicode編碼格式,硬碟是utf-8。平常的資料操作都是先把資料讀取到記憶體中,所以記憶體中都是unicode編碼格式。所以我們平常在做編碼轉換時候,通常用unicode作為中間編碼。先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼格式。

decode的作用是將二進位制資料解碼成unicode編碼,如str1.decode(『utf-8』),表示將utf-8的編碼字串解碼成unicode編碼。

簡單的來說:decode就是把二進位制資料(bytes)轉化**看的懂得英文或者漢字(decode用的比較多)

encode的作用是將unicode編碼的字串編碼成二進位制資料,如str2.encode(『utf-8』),表示將unicode編碼的字串編碼成utf-8。

因此,轉碼的時候一定要先搞明白,字串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼

**中字串的預設編碼與**檔案本身的編碼一致。

如:s=『中文』

如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。通常,在沒有指定特定的編碼方式時,都是使用的系統預設編碼建立的**檔案。

如果字串是這樣定義:s=u』中文』

則該字串的編碼就被指定為unicode了,即python的內部編碼,而與**檔案本身的編碼無關。因此,對於這種情況做編碼轉換,只需要直接使用encode方法將其轉換成指定編碼即可。

如果乙個字串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷:

isinstance(s,unicode) #用來判斷是否為unicode

用非unicode編碼形式的str來encode會報錯

python Unicode 編碼問題

今天在用python寫分頁 傳入兩個引數 page num,page size,報錯了 我用的是python2.7 列印變數型別是unicode 所以要把unicode 轉成 int 提供兩種方法,都是先轉成字串,再轉成int page num int filter str.isdigit,page...

python unicode 編碼整理

unicode 只定義字元對應的數字,但沒有規定這些數字如何儲存起來,比如像中文的 我 字儲存時需要兩個位元組來表示,而英文本母a卻只需要乙個位元組,有些其他的字元可能需要3 4個位元組。utf 8 是對 unicode 編碼儲存的一種實現方式,同樣的還有 utf 16,utf 32。utf 8 是...

python unicode編碼轉換

python unicode編碼轉換 chr 20000 北 ord 函式主要用來返回對應字元的ascii碼,chr 主要用來表示ascii碼對應的字元他的輸入時數字,可以用十進位制,也可以用十六進製制。print ord a 97print chr 97 aprint chr 0x61 a乙個簡單...