Python中ASCII,Unicode,UTF 8,encode,decode這些有什麼關係?

時間 2021-06-27 00:42:55

1樓:NoOffense

ASCII,UTF-8是常用的字元編碼型別,Unicode是字符集,它們跟具體某一門語言(比如Python)無關,是計算機通行的標準。

字元編碼型別規定了位元組(bytes)和字元(character)是如何對應的。例如ASCII中,10進製65代字元'A';UTF-8中,16進製制E4B8AD代表字元'中'。ASCII字元是單位元組的,UTF-8可以單或多。

UTF-8出現時間晚,向後相容ASCII,也就是說ASCII編碼的檔案可以用UTF-8正常開啟而不會亂碼。UTF-8可以表示中文等字元,ASCII只能表示英文和一些特殊字元。

我們電腦中每個文字檔案都是一串位元組,在不知道編碼的情況下,是不知道其字元的,但是文字檢視軟體(如記事本、Notepad++)會自動判斷編碼型別。

Unicode是字符集,是一種國際標準,規定了整數和字元的對應關係,包括了世界上各種語言的字元供人們使用。Unicode沒有規定位元組和字元如何對應,在計算機上有多種實現的編碼,UTF-8就是其中一種。除了UTF-8外,還有UCS-2等編碼實現了Unicode,但是UTF-8是最常用的,因為它相容ASCII。

有些地方也將UCS-2稱為Unicode,需要防止混淆。

Python2的字串分為unicode和str,而Python3取消了unicode,字串是str物件,位元組串是bytes物件。str物件encode之後得到bytes物件。bytes物件decode之後得到str物件。

如>> '中'.encode('UTF-8')

>> b'\xe4\xb8\xad'

>> b'\xe4\xb8\xad'.decode('UTF-8')

>> '中'

2樓:

ASCII,Unicode,UTF-8都是文字編碼,(ASCII只有英文和英文符號)(三種都是bytes類),str.encode("utf-8")是將字元按照UTF-8標準編為bytes,bytes.decode("UTF-8")是將bytes按照UTF-8標準解碼為str。

python中enumerate object究竟是一種怎樣的存在形式呢?

l Ass We Can type of l is tuplee enumerate l type of e is enumerate objectforv inenumerate e type of enumerate e is enumerate object print v type of v...

Python中實現 a and b or c in xx 這種邏輯最簡潔的方式是怎樣的?

意群 不用lambda的話,最簡單的是用all。In 1 a,b,c 1,10,5In 2 xs list range 1 6 In 6 all i inxs foriin a,b orcinxs Out 6 True ohmyfish 使用 Perl 6 中的class Junction 是很簡潔...

python中的beautifulsoup和xpath有什麼異同點?

我覺得不同主要有以下幾點 學習曲線 效能曲線 對新手友好度 全宇宙最好的文字標籤解析庫當然是bs了,可一遇到js還是表示很無奈,非要說x系列快點實在沒有必要哈哈哈 我怎麼覺得xpath比bs好用多了。並且也很靈活。特別新版本的lxml更強大 beautifulsoup 是 HTML 解析庫,XPat...