1. 程式人生 > >Python字串的編碼與解碼(encode與decode)

Python字串的編碼與解碼(encode與decode)

首先要搞清楚,字串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

decode的作用是將其他編碼的字串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字串轉換成unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字串,如str2.encode('gb2312'),表示將unicode編碼的字串轉換成gb2312編碼。

在某些IDE中,字串的輸出總是出現亂碼,甚至錯誤,其實是由於IDE的結果輸出控制檯自身不能顯示字串的編碼,而不是程式本身的問題。

例如:ljq.py,編碼為utf8,包含內容如下:

#-*-coding:utf-8-*- 

s='中文'
print type(s) #檢視s的字元型別
print s  

s.decode('utf8') #解碼utf8,預設的編碼方式是unicode
s.decode('gbk', "ignore") #解碼utf8,忽略其中有異常的編碼,僅顯示有效的編碼
s.decode('gbk', 'replace')
print type(s)
print s

s.encode('gb2312') ##編碼為utf8
print type(s)
print
s

ljq.py編碼必需與s.decode('utf8')指定的編碼一致,不然會丟擲解碼異常資訊,可以通過s.decode("gbk", "ignore")或s.decode("gbk", "replace")來解決。

另外對於一些包含特殊字元的編碼,直接解碼可能會報錯,可以使用對於的引數來設定。如:
s.decode("utf-8", "ignore") 忽略其中有異常的編碼,僅顯示有效的編碼
s.decode("utf-8", "replace") 替換其中異常的編碼,這個相對來可能一眼就知道那些字元編碼出問題了。

從unicode轉str,被看做是把一個資訊文字編碼為二進位制位元組流的過程,要用encode方法

相關推薦

Python字串編碼解碼(encodedecode)

首先要搞清楚,字串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。 decode的作用是將其他編碼的字串轉換成unicode編碼,如str1

python編碼解碼decodeencode的使用

python encode decode python 在處理字符串時經常遇到編碼錯誤,導致亂碼,且python 2.x和 python 3.x之間有很大的不同,先在這裏記錄一下,以後整理;轉載 文章一篇:http://www.cnblogs.com/evening/archive/2012/04

Python 列表內字元編碼問題,encodedecode

在學習python爬蟲時遇到個小問題,記錄一下: 列表內的元素用迴圈單個輸出的話,是正常的中文顯示,而用 append 方法新增到集合再直接輸出集合的時候,顯示的是下面的Unicode編碼格式。 import urllib2 import random from bs4 i

python字串編碼

python預設編碼   python 2.x預設的字元編碼是ASCII,預設的檔案編碼也是ASCII。   python 3.x預設的字元編碼是unicode,預設的檔案編碼是utf-8。   中文亂碼問題   無論以什麼編碼在記憶體裡顯示字元,存到硬碟上都是二進位制

Python字串-編碼

字串str ​ 作用: ​ 用來記錄文字資訊 字面值表示方法: ​ 用引號括起來的部分都是字串 ​ ‘ 單引號 ​ “ 雙引號 ​ ’’’ 三單引號 ​ ””” 三雙引號 空字串’’, ””, ’’’’’’, ”””””” 字串的字面值表示方式:

Python編碼解碼

Python的編碼和解碼 在不同的國家,存在不同的文字,由於現在的軟體都要做到國際化通用,所以必須要有一種語言或編碼方式,來實現各種編碼的解碼,然後重新編碼。 在西方國家,沒有漢字,只有英文,所以最開始使用的是ASCII編碼,只有96個元素,所以用8位(1位元組)就能完全表示,但是無法解析中文。 中國有

Python字串編碼轉換

使用encode()方法編碼 str.encode([encoding="utf-8"][,errors="strict"]) str:表示需要轉換的字串 encoding=“utf-8”:可選引數

python url編碼解碼

一、為什麼要進行Url編碼 url帶引數的請求格式為(舉例): http://www.baidu.com/s?k1=v1&k2=v2 當請求資料為字典data = {k1:v1, k2:v2},且引數中包含中文或者?、=等特殊符號時,通過url編碼,將data轉化為特定格式k1=v1&k2

python字串編碼及亂碼解決方案

字元編碼詳解Python原始碼的編碼方式str與位元組碼s = "人生苦短"s是個字串,它本身儲存的就是位元組碼(這個s可能是檔案中的一行,或者命令列中的一行?)。那麼這個位元組碼是什麼格式的?如果這段程式碼是在直譯器上輸入的,那麼這個s的格式就是直譯器的編碼格式,對於win

python 字串編碼

通過字串的decode和encode方法 1 encode([encoding,[errors]]) #其中encoding可以有多種值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支援。errors預設值為"strict",意思是UnicodeError。可能

js對字串編碼解碼 .net對字串編碼解碼

js對字串編碼的方式: 1.escape();// 對字串進行編碼   2.encodeurl();//把字串編碼為URI  / 3.encodeURIComponent();//把字串編碼為URI元件 var str = "http://localhost:8080/P

Python3中字符串的編碼解碼以及編碼之間轉換(decodeencode)

python3 encode 由於 表示 nic code .... 以及 mage 一、編碼 二、編碼與解碼 Python3中對py文件的默認編碼是urf-8。但是字符串的編碼是Unicode。 由於Unicode采用32位4個字節來表示一個字符,存儲和傳輸太浪費資

[Python除錯] 'gbk' codec can't encode character xxx in position的錯誤解決&編碼解碼的思考探究

錯誤出現 使用request模組爬取網頁,將頁面原始檔res.text儲存到檔案get.html時, import request res = requests.get('http://weibo.com') with open(r'd:\get.html', 'w') as f

Java如何進行Base64的編碼(Encode)解碼(Decode)?

*********************************************************** 關於base64編碼Encode和Decode編碼的幾種方式 Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Bina

Java進行Base64的編碼(Encode)解碼(Decode)

關於base64編碼Encode和Decode編碼的幾種方式 Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Binary資料和字串資料彼此之間是可以互相轉換的,十分方便。在實際應用上,Base64除了能將Binary資料視覺化之外,也常用來表示字串加密過後的內容。如果要使用J

python 字元編碼解碼——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode

摘要:在進行python指令碼的編寫時,如果我們用python來處理網頁資料或者進行與中文字元有關的處理工作,經常出現這樣的出錯資訊:SyntaxError: Non-ASCII character '\xe6' in file ./filename.py on line

python中求漢字字串長度以及預設編碼解碼格式設定

print(len('你好啊')) 結果為 3 一般漢字在uicode編碼格式中,一個漢字對應長度為1 在utf-8編碼格式中,一個漢字對應長度為3 我在剛開始寫的時候,在python3環境下,列表value裡,用的是:len(value[i].decode('u

Python中的encodedecode,詳解字串位元組物件之間的轉換

1.相關異常我們在處理交換的資料時經常遇到這樣的異常:TypeError: can't use a string pattern on a bytes-like objectTypeError: a bytes-like object is required, not 'st

Python字串encodedecode研究心得——解決亂碼問題

為什麼Python使用過程中會出現各式各樣的亂碼問題,明明是中文字元卻顯示成“/xe4/xb8/xad/xe6/x96/x87”的形式?為什麼會報錯“UnicodeEncodeError: 'ascii' codec can't encode characters in po

Java如何進行Base64的編碼(Encode)解碼(Decode)

——————————————————————————————————————————————————— 轉載自:http://blog.csdn.net/zhou_kapenter/article/details/62890262 關於base64編碼Encode和Decode編碼的幾種方式 Base64