91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一篇文章助你理解Python2中字符串編碼問題

發布時間:2020-07-09 12:48:54 來源:網絡 閱讀:297 作者:pengdongcheng 欄目:編程語言

前幾天給大家介紹了unicode編碼和utf-8編碼的理論知識,沒來得及上車的小伙伴們可以戳這篇文章:淺談unicode編碼和utf-8編碼的關系。下面在Python2環境中進行代碼演示,分別Windows和Linux操作系統下進行演示,以加深對字符串編碼的理解。

一篇文章助你理解Python2中字符串編碼問題


1、首先在Windows操作系統下的Python2環境中進行演示,我們都知道Python2中的編碼問題經常出現,需要通過編碼(encode)和解碼(decode)進行實現。通過cmd進入命令行窗口,然后輸入兩個字符串’abc’和u’abc’,如下圖所示。需要注意的是這兩個字符串的編碼格式是不一樣的,前者是string,后者是unicode。接下來對其進行編碼,指定編碼為utf-8,可以發現兩個都正常顯示,沒有報錯。

一篇文章助你理解Python2中字符串編碼問題


當字符串變為中文的時候,爾后對其再次進行編碼演示的時候,如下圖所示,可以看到前者有報錯產生,而后者沒有報錯。這個報錯在Python2中經常出現,所以需要特別注意,Python字符串在內存中它是通過unicode來進行編碼的。此時定義的str1它傳遞過來的是utf-8編碼,非unicode編碼,使用encode()函數的前提是待轉換的字符串編碼為unicode編碼。所以可以看到str1會報錯,而str2并沒有報錯。在Windows下字符串的編碼格式是GB2312編碼,在Linux下字符串的編碼格式是utf-8編碼。如果想要將str1順利的轉換為utf-8編碼的話,則需要先將str1進行解碼成unicode編碼,再進行編碼即可,此時得到的結果同str2轉換的結果是一致的。

一篇文章助你理解Python2中字符串編碼問題


2、現在在Linux操作系統下的Python2環境中進行演示,使用一樣的字符串,結果最后是一樣的,但是過程有些不同,如下圖所示。

一篇文章助你理解Python2中字符串編碼問題


在Windows下字符串的編碼格式是GB2312編碼,在Linux下字符串的編碼格式是utf-8編碼。所以當輸入有中文的字符串的時候,直接編碼為utf-8會報錯;通過gb2312編碼進行解碼也會報錯。只要通過utf-8編碼進行解碼,然后再通過utf-8進行編碼才可以正確的輸出結果。
有個地方大家可能會覺得很奇怪,就是一開始str1.encode(‘utf-8’),表面上看上去str1已經是unicode編碼了,之后進行編碼,按說沒有什么問題,可是為什么還是會報錯呢?其實主要原因還是在于str1并不是真正的解碼成了unicode格式。其實str1.encode(‘utf-8’),它默認的會進行一步解碼,但是其decode()的過程調用的是默認的編碼格式,而這個默認的編碼格式卻是ASCII編碼,如下圖所示。

一篇文章助你理解Python2中字符串編碼問題


當中文字符串使用ASCII編碼進行解碼之后,本身就報錯了,后邊的encode(‘utf-8’)根本就沒有執行到。
關于Python2中字符串編碼的問題,就先介紹到這里了,相信大家應該有了一個初步的認識了,下一篇文章將介紹Python3中字符串編碼的問題。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 阿瓦提县| 衡东县| 杂多县| 饶河县| 额敏县| 墨竹工卡县| 长子县| 苍南县| 垣曲县| 两当县| 开封县| 图木舒克市| 正阳县| 吐鲁番市| 文登市| 铜川市| 桦川县| 沅陵县| 河北省| 莱芜市| 新安县| 平江县| 钦州市| 华蓥市| 筠连县| 雷波县| 镇安县| 彭山县| 郓城县| 柘荣县| 土默特左旗| 连城县| 邢台市| 达孜县| 和平县| 鄄城县| 盐池县| 望江县| 水城县| 叶城县|