tft每日頭條

 > 科技

 > python中字符串使用的字符編碼

python中字符串使用的字符編碼

科技 更新时间:2025-02-01 07:44:18

72節内容),對編碼的概念、分類和作用,做過一個簡單的介紹,今天的内容,還是從"編碼"開始談。

最早的字符串編碼是ASCII碼,是由美國國家标準學會(American National Standard Institute , ANSI )制定的,所以叫做"美國信息交換标準代碼",它的内容是這樣的:

python中字符串使用的字符編碼(Python中字符串編碼的轉換)1

ASCII碼隻包括以上四種字符内容,并且最多隻能表示256個字符。

1967年ASCII第一次以規範标準的類型發表以來,到今天它已經走過了53年的風雨曆程,作為一種國際通用的西文字符編碼标準,它的作用的不可忽視的,但随着技術的發展,由于ASCII碼自身的局限性,它已逐漸被後起之秀-萬國碼"utf-8"所取代。

而在漢語環境下,最适合的編碼标準,應該是我國制定的"GBK""GB2312"。

在Python中,常用的字符串類型有str和bytes兩種。

str表示Unicode字符,就是包括ASCII碼、utf-8碼、GBK碼、GB2312碼之類的編碼;

bytes表示的則是二進制數據,其中包括了編碼的文本。

我們知道,機器語言本質上就是0和1組成的二進制語言,所以str和bytes字符在不能拼接的情況下,它們之間的轉換就非常必要了,因為在儲存和傳輸的時候,是必須要将str字符類型轉換為bytes字節類型的。

今天就來學習如何str和bytes類型之間轉換的方法。

1、在Python中,提供了encode()方法來将str轉換為bytes類型,通稱"編碼過程",它的語法格式是這樣的:

str.encode(encoding="utf-8",errors="strict")

上面的str當然代表了要進行轉換的字符;

方法關鍵字encode後面的小括号中可以包含兩個可選參數,其間使用逗号","分隔;

第一個參數encoding="utf-8",用來指定轉碼的時候所采用的字符編碼,省略時默認為utf-8,當隻用這一個參數時,可以直接用引号引用編碼;

第二個參數errors="strict",用來指定出錯時的處理方式,省略時默認值為strict,而它的值分别是:strict=出現錯誤抛出異常、ignore=忽略錯誤、replace=使用"?"替換錯誤、xmlcharrefreplace=使用XML的字符引用。

譚嗣同就義時留下一首詩,其中兩句:"我自橫刀向天笑,去留肝膽兩昆侖。",頗為大氣磅礴!接下來就用這兩句詩定義一個字符串,并分别采用"GBK"和"utf-8"編碼轉換為二進制編碼輸出,詳見下圖:

python中字符串使用的字符編碼(Python中字符串編碼的轉換)2

觀察上面的結果,發現采用"utf-8"編碼轉換為二進制後要比采用"GBK"的長,這是因為,"GBK"編碼中漢字占兩個字節,"utf-8"編碼中漢字占三個字節。

至于encode()方法的第二個參數,一般情況下使用默認值處理,現在就不贅述了。

2、使用decode()方法将二進制的bytes類型轉換為str類型,通稱"解碼過程",它的語法格式下面這樣的:

bytes.decode(encoding="utf-8",errors="strict")

可以看到,這個語法格式和參數和encode()方法的基本一緻,事實上參數的内容也是一樣的,因為這兩種方法事實上就是一種相互逆轉的過程,所以直接用代碼實例就能說明,詳見下圖:

python中字符串使用的字符編碼(Python中字符串編碼的轉換)3

注意:在解碼過程中采用的字符編碼,要和編碼過程中采用的字符編碼保持一緻。如同上面的實例一樣,編碼時采用"GBK",解碼時依然采用"GBK",否則就會出現異常,詳見下圖:

python中字符串使用的字符編碼(Python中字符串編碼的轉換)4

在使用decode()方法時,還有一點要注意的是:原字符串不會被修改。如果想修改原字符串,隻能通過重新賦值。

以上就是普通字符串和二進制編碼之間互相轉換的方法。各位朋友還能看的入眼嗎?

感謝大家一直以來的支持,明天奉上的是"正則表達式"的内容,敬請拭目以待。

為自己加油,我是"學海無涯自學不惜!"

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved