72節内容),對編碼的概念、分類和作用,做過一個簡單的介紹,今天的内容,還是從"編碼"開始談。
最早的字符串編碼是ASCII碼,是由美國國家标準學會(American National Standard Institute , ANSI )制定的,所以叫做"美國信息交換标準代碼",它的内容是這樣的:
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"編碼轉換為二進制編碼輸出,詳見下圖:
觀察上面的結果,發現采用"utf-8"編碼轉換為二進制後要比采用"GBK"的長,這是因為,"GBK"編碼中漢字占兩個字節,"utf-8"編碼中漢字占三個字節。
至于encode()方法的第二個參數,一般情況下使用默認值處理,現在就不贅述了。
2、使用decode()方法将二進制的bytes類型轉換為str類型,通稱"解碼過程",它的語法格式下面這樣的:
bytes.decode(encoding="utf-8",errors="strict")
可以看到,這個語法格式和參數和encode()方法的基本一緻,事實上參數的内容也是一樣的,因為這兩種方法事實上就是一種相互逆轉的過程,所以直接用代碼實例就能說明,詳見下圖:
注意:在解碼過程中采用的字符編碼,要和編碼過程中采用的字符編碼保持一緻。如同上面的實例一樣,編碼時采用"GBK",解碼時依然采用"GBK",否則就會出現異常,詳見下圖:
在使用decode()方法時,還有一點要注意的是:原字符串不會被修改。如果想修改原字符串,隻能通過重新賦值。
以上就是普通字符串和二進制編碼之間互相轉換的方法。各位朋友還能看的入眼嗎?
感謝大家一直以來的支持,明天奉上的是"正則表達式"的内容,敬請拭目以待。
為自己加油,我是"學海無涯自學不惜!"
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!