導航:首頁 > 編程語言 > python畫圖無法輸出漢字

python畫圖無法輸出漢字

發布時間:2022-09-12 03:14:03

python 無法顯示漢字

實際上,這段代碼所出現的問題和cPickle模塊沒什麼關系。而是Python 2顯示中文「亂碼」的問題。
Python 2中,str是8-bit string sequence(有點像Python 3中的bytes)。而Python 3中str就相當於Python 2中的unicode。
所以,

>>>a='上海'
>>>repr(a)
"'\xc9\xcf\xba\xa3'"
>>>a#a中存儲的8位元組轉義字元序列
'xc9xcfxbaxa3'
>>>printa#輸出a,在此過程中,會對a進行解碼操作,然後輸出
上海

上例中,可以看到:
a = '上海'
a中實際存儲的是:
'xc9xcfxbaxa3'
這樣一個位元組序列。它實際上是對'上海'這個unicode字元串按gbk/cp936/gb18030編碼得到的(和簡體中文Windows操作系統的默認編碼有關)。
給你推薦一篇博客:
http://blog.csdn.net/kiki113/article/details/4062063

下面是我寫的示例:

#_*_coding:gbk_*_

#TestwithPython2.7,Python3.3onWindowsXP

try:
importcPickleasp
except:
importpickleasp

address_file='address.txt'

classHuman(object):
def__init__(self,address):
self.address=address

deftxl(self):
af={'address':self.address}
print(af)
print(af['address'])
f=open(address_file,'wb')#Inpython3,usebinarymode.
#Inpython2.7,defaultprotocolis0.
#However,itis3inpython3.3.
p.mp(af,f,0)
f.close()

address='上海'
print(address)

dq=Human(address)
dq.txl()

af=open(address_file,'rb')#
print(p.load(af))
af.close()

"""
Output
----------------------------------------
Python2.7.6:
1.#-*-coding:utf-8-*-
涓婃搗
{'address':'xe4xb8x8axe6xb5xb7'}
涓婃搗
{'address':'xe4xb8x8axe6xb5xb7'}
2.#-*-coding:gbk-*-or#_*_coding:cp936_*_
上海
{'address':'xc9xcfxbaxa3'}
上海
{'address':'xc9xcfxbaxa3'}

Python3.3.3:
上海
{'address':'上海'}
上海
{'address':'上海'}
------------------------------------------
InPython3.3.3:
>>>'上海'.encode('utf-8')
b'xe4xb8x8axe6xb5xb7'
>>>_.decode('cp936')
'涓婃搗'
"""

從這個示例中可以看出,雖然把字典整個print出來不能正常解析address中的內容:

>>>addr={'addr':'上海'}
>>>addr
{'addr':'xc9xcfxbaxa3'}
>>>printaddr
{'addr':'xc9xcfxbaxa3'}

但是單獨列印:

>>>addr['addr']
'xc9xcfxbaxa3'
>>>printaddr['addr']#print輸出之前隱含了編碼解碼操作,但為何列印整個字典時輸出不正常尚待研究
上海

一切OK。
所以,如果真的用Python 2的話,對於該問題可以考慮手工負責編碼、解碼操作(如果使用print單獨列印地址信息,就不用這么麻煩了,因為這些事它幫你做了)。用Python3,就沒這么多問題了。


最後補充一點,pickle模塊只是提供了一種序列化Python對象的方法。所以序列化生成的文件中和想像的不一樣也不足為奇。正如自由de王國所說的,只要序列化後還能夠反序列化成功就行了。實際上,當protocol不是0的情況下,序列化生成的文件是二進制格式的,根本沒法用記事本直接看。

Ⅱ Python繪圖時如何顯示中文

Python使用matplotlib.pyplot畫圖,需要將部分標題等內容顯示為中文,但是直接輸入:
pyplot.xlabel('時間')

這時生成的圖片並不會將「時間」正常顯示出來,而如果我們需要顯示中文,有兩種方法。
方式一:示例
rcParams的屬性
相關推薦:《Python視頻教程》
方式二:(推薦使用)
示例:
中文字體種類

Ⅲ Python 輸出中文問題,真是整瘋了。。。

選擇# -*- coding: utf-8-*-,因為你文件編碼是utf-8的。


也可以這樣,形式簡單一些:

#encoding:utf-8


python中有兩種類型的字元串:普通的str和unicode。一般情況下,處理中文數據推薦使用unicode類型,因為這樣就不用考慮編碼的問題。到了顯示或輸出時再轉換為存儲類型(utf-8、GBK)。但unicode本身是不能輸出的,它只是一種內部編碼。


看以下示例代碼:

#unicode轉str,utf-8編碼
u'哈哈哈哈'.encode('utf-8','ignore')
#unicode轉str,GBK編碼
u'哈哈哈哈'.encode('gbk','ignore')
#str轉unicode,其中str為utf-8編碼
'哈哈哈哈'.decode('utf-8','ignore')

Ⅳ python列印輸出漢字,有一部分出現亂碼怎麼解決

主要「()」不要用中文括弧
冒號不要用中文冒號
引號不要用中文引號
只有要列印的輸入內容可以用中文的。
以上最好檢查一遍,因為我打的時候經常打錯,最好刪了重打,因為兩種括弧太難區分了。

Ⅳ 請問,python打開中文字元文件,但顯示不出中文怎麼辦

一般是編碼格式的問題,python內部默認的編碼格式是utf-8,常見的文本編碼格式是utf-8,gbk。編碼格式不不一致就會亂碼。可以在代碼前面申明編碼格式。

Ⅵ python 2.7輸出中文字元串出現錯誤如何解決

由於漢字不屬於ASCII編碼表中的字元,因此,無論是在Python交互模式還是執行模式,很多時候都無法正常輸出中文。

Ⅶ Python print無法輸出中文字元

這里提示語法錯誤。因為你沒有指定文件的編碼,默認情況下不能用中文。

如果代碼中有中文、中文的注釋,需要在文件最上面加上這一句:


#encoding:utf-8

print'哈哈哈哈哈'


這樣就OK了,望採納!

Ⅷ 為什麼Python沒輸出中文

本地執行可以顯示中文。
代碼在線工具中使用以下方法

print("\u5510\u5b9d\u6743".encode('utf-8').decode('unicode_escape'))

Ⅸ python IDLE以及控制台中無法正確顯示中文

Python顯示中文的問題很頭大,原因在於Windows中文版的編碼格式是GBK,因此直接顯示中文會顯示亂碼的問題。
因此我們可以在開頭加上#_*_encoding:<>_*_ <>可以代筆:UTF8或cp936等編碼。

Ⅹ python2.7.9無法輸出中文

python2.7及以下,輸出字元默認為標准ASCII (0- 127,也就是 byte字元),顯示亂碼應該是你輸出的是 utf-8 編碼字元串,windows控制台默認編碼是gbk(可以通過命令CHCP 65001 設置為utf-8),報錯是因為你輸出的是 unicode 字元(包含128-255)


新人如果對編碼不是很了解,那最好的解決辦法就是,封裝一個unicode轉byte函數,對於要輸出的字元,都調用這個函數,如:

defu2b(text):
ifnotisinstance(text,unicode):
returntext
returntext.encode('utf-8')
閱讀全文

與python畫圖無法輸出漢字相關的資料

熱點內容
編譯動態庫時會連接依賴庫嗎 瀏覽:706
淘寶手機加密是隨機的嗎 瀏覽:672
解壓包子怎麼裝飾 瀏覽:585
四個數湊24演算法 瀏覽:676
哪一種不是vi編譯器的模式 瀏覽:168
xp在此處打開命令窗口 瀏覽:128
代碼編譯運行用什麼軟體 瀏覽:997
動態庫在程序編譯時會被連接到 瀏覽:760
python超簡單編程 瀏覽:259
獲取命令方 瀏覽:976
怎樣製作文件夾和圖片 瀏覽:59
調研編譯寫信息 瀏覽:861
python馮諾依曼 瀏覽:419
同時安裝多個app有什麼影響 瀏覽:254
奧術殺戮命令宏 瀏覽:184
用sdes加密明文字母e 瀏覽:361
單片機原理及應用試題 瀏覽:425
易語言開啟指定文件夾 瀏覽:40
馬思純參加密室大逃脫 瀏覽:322
文件夾冬季澆築溫度 瀏覽:712