首页
/
每日頭條
/
科技
/
python中字符串使用的字符編碼
python中字符串使用的字符編碼
更新时间:2025-11-15 11:48:22

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()方法時,還有一點要注意的是:原字符串不會被修改。如果想修改原字符串,隻能通過重新賦值。

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

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

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

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
壁挂式新風系統和管道式哪個好
壁挂式新風系統和管道式哪個好
近年來,市面上PM2.5、甲醛等等空氣污染檢測儀的銷量劇增。消費者對于室内空氣環境污染的意識逐漸提高,很多人意識到了裝修和家具殘留各種有毒氣體的危害,意識到了室内及時通風換氣的重要性。于是,改善室内空氣質量的産品成了許多人的迫切選擇。新風系...
2025-11-15
手機屏上的垃圾怎麼删除
手機屏上的垃圾怎麼删除
手機屏上的垃圾怎麼删除?可以進行殺毒,騰訊手機管家——安全防護——病毒查殺,等待掃描結束,按提示清除病毒即可,我來為大家科普一下關于手機屏上的垃圾怎麼删除?以下内容希望對你有幫助!手機屏上的垃圾怎麼删除可以進行殺毒,騰訊手機管家——安全防護...
2025-11-15
redmi note 11t pro+屏幕測試
redmi note 11t pro+屏幕測試
redminote11tpro+屏幕測試?RedmiNote11TPro或許是2022年上半年手機名稱字數最長的手機之一,同時也是在2022年配置最為獨特的手機之一其所搭載的LCD直屏、3.5mm耳機接口等配置在2022年并不主流,但這也讓...
2025-11-15
華為如何隐藏微信的聊天内容
華為如何隐藏微信的聊天内容
華為如何隐藏微信的聊天内容?李小龍介紹,使用華為手機,在微信聊天記錄界面雙指按壓屏幕,選擇聊天隐私保護後就可以自動隐藏聊天記錄中的頭像和昵稱,接下來我們就來聊聊關于華為如何隐藏微信的聊天内容?以下内容大家不妨參考一二希望能幫到您!華為如何隐...
2025-11-15
洛陽汽車站能不能用微信支付買票
洛陽汽車站能不能用微信支付買票
改造後的金寨汽車站美觀大方!金寨縣汽車站新貌售票廳改造後買票支持手機支付,很接地氣!關鍵還有領紅包碼,好貼心啊!售票窗口顯示可以微信支付,也可以支付寶支付購票站内檢票口上方新增了LED顯示屏,旅客在候車的同時可以方便地查看檢票信息。候車廳同...
2025-11-15
Copyright 2023-2025 - www.tftnews.com All Rights Reserved