偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深度剖析Python 中文亂碼說明

開發(fā) 后端
對于每一個IT行業(yè)的從業(yè)人員,無論是開發(fā)人員、項目經(jīng)理、還是測試人員,掌握了Python 中文亂碼會使我們的編程工作更簡單和更輕松。

一直以來,Python 中文亂碼就是一個極為頭大的問題,經(jīng)常拋出編碼轉(zhuǎn)換的異常,python中的str和unicode到底是一個什么東西呢?下面就進行學(xué)習相關(guān)Python 中文亂碼問題。

Python 中文亂碼中提到unicode,一般指的是unicode對象,例如'哈哈'的unicode對象為而str,是一個字節(jié)數(shù)組,這個字節(jié)數(shù)組表示的是對unicode對象編碼(可以是utf-8、gbk、cp936、GB2312)后的存儲的格式。這里它僅僅是一個字節(jié)流,沒有其它的含義,如果你想使這個字節(jié)流顯示的內(nèi)容有意義,就必須用正確的編碼格式,解碼顯示。

例如:

setdefaultencoding

對于unicode對象哈哈進行編碼,編碼成一個utf-8編碼的str-s_utf8,s_utf8就是是一個字節(jié)數(shù)組,存放的就是'\xe5\x93\x88\xe5\x93\x88',但是這僅僅是一個字節(jié)數(shù)組,如果你想將它通過print語句輸出成哈哈,那你就失望了,為什么呢?

因為print語句它的實現(xiàn)是將要輸出的內(nèi)容傳送了操作系統(tǒng),操作系統(tǒng)會根據(jù)系統(tǒng)的編碼對輸入的字節(jié)流進行編碼,這就解釋了為什么utf-8格式的字符串“哈哈”,輸出的是“鍝堝搱”。

因為 '\xe5\x93\x88\xe5\x93\x88'用GB2312去解釋,其顯示的出來就是“鍝堝搱”。這里再強調(diào)一下,str記錄的是字節(jié)數(shù)組,只是某種編碼的存儲格式,至于輸出到文件或是打印出來是什么格式,完全取決于其解碼的編碼將它解碼成什么樣子。

這里再對print進行一點補充說明:當將一個unicode對象傳給print時,在內(nèi)部會將該unicode對象進行一次轉(zhuǎn)換,轉(zhuǎn)換成本地的默認編碼(這僅是個人猜測) str和unicode對象的轉(zhuǎn)換,通過encode和decode實現(xiàn),具體使用如下:

python 字符串和unicode

將GBK'哈哈'轉(zhuǎn)換成unicode,然后再轉(zhuǎn)換成UTF8 后就可以轉(zhuǎn)換成功,為什么呢?在python中str和unicode在編碼和解碼過程中。如果將一個str直接編碼成另一種編碼,會先把str解碼成unicode,采用的編碼為默認編碼,一般默認編碼是 ansci i,所以在上面示例代碼中***次轉(zhuǎn)換的時候會出錯,當設(shè)定當前默認編碼為'gbk'后,就不會出錯了。

在***節(jié)已經(jīng)說過,Python 中文亂碼中的字符串,只是一個字節(jié)數(shù)組,所以當把a情況的str輸出到gbk編碼的控制臺時,就將顯示為亂碼:鍝堝搱;而當把b情況下的str輸出utf-8編碼的控制臺時,也將顯示亂碼的問題,是什么也沒有,也許'\xb9\xfe\xb9\xfe'用utf-8解碼顯示,就是空白吧至于reload(sys)是因為 Python2.5 初始化后會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入 。

【編輯推薦】

  1. 有關(guān)Python系統(tǒng)文件進行介紹指導(dǎo)
  2. 如何正確的使用Python函數(shù)
  3. 對Python 構(gòu)建工具進行詳細介紹分析
  4. PythonAndroid淺析Python優(yōu)勢所在
  5. 如何使用Python模塊解析配置文件?
責任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2010-02-23 10:50:11

Python 測試框架

2010-02-04 14:01:44

Android應(yīng)用

2010-06-07 11:13:46

MySQL中文亂碼

2010-01-13 10:16:42

C++軟件

2010-02-01 13:34:59

Python 腳本

2010-02-02 15:25:35

Python語法

2010-02-03 16:56:24

Python包

2010-03-01 14:50:06

Python 工具

2010-03-01 18:33:30

2010-02-02 13:22:06

Python面向?qū)ο?/a>

2010-02-03 09:35:20

Python函數(shù)編程

2010-02-03 11:26:28

2010-02-24 16:33:28

Python功能

2010-02-26 10:38:29

Python語言

2010-02-26 17:44:40

Python測試框架

2010-02-23 10:05:52

Python歷史

2010-02-02 14:22:50

Python示例

2011-06-24 14:46:23

Qt

2010-03-01 16:48:02

Python模塊

2010-02-01 14:05:03

點贊
收藏

51CTO技術(shù)棧公眾號