python無法顯示漢字

2021-05-04 15:40:33 字數 2551 閱讀 7340

1樓:匿名使用者

實際上,這段**所出現的問題和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位元組轉義字元序列

'\xc9\xcf\xba\xa3'

>>> print a # 輸出a,在此過程中,會對a進行解碼操作,然後輸出

上海上例中,可以看到:

a = '上海'

a中實際儲存的是:

'\xc9\xcf\xba\xa3'

這樣一個位元組序列。它實際上是對'上海'這個unicode字串按gbk/cp936/gb18030編碼得到的(和簡體中文windows作業系統的預設編碼有關)。

給你推薦一篇部落格:

下面是我寫的示例:

# _*_ coding: gbk _*_

# test with python 2.7, python 3.3 on windows xp

try:

import cpickle as p

except:

import pickle as p

address_file = 'address.txt'

class human(object):

def __init__(self, address):

self.address = address

def txl(self):

af =

print(af)

print(af['address'])

f = open(address_file, 'wb') # in python 3, use binary mode.

# in python 2.7, default protocol is 0.

# however, it is 3 in python 3.3.

p.dump(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

----------------------------------------

python 2.7.6:

1. # -*- coding: utf-8 -*-

涓婃搗涓婃搗

2. # -*- coding: gbk -*- or # _*_ coding: cp936 _*_

上海上海

python 3.3.3:

上海上海

------------------------------------------

in python 3.3.3:

>>> '上海'.encode('utf-8')

b'\xe4\xb8\x8a\xe6\xb5\xb7'

>>> _.decode('cp936')

'涓婃搗'

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

>>> addr =

>>> addr

>>> print addr

但是單獨列印:

>>> addr['addr']

'\xc9\xcf\xba\xa3'

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

上海一切ok。

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

最後補充一點,pickle模組只是提供了一種序列化python物件的方法。所以序列化生成的檔案中和想象的不一樣也不足為奇。正如自由de王國所說的,只要序列化後還能夠反序列化成功就行了。

實際上,當protocol不是0的情況下,序列化生成的檔案是二進位制格式的,根本沒法用記事本直接看。

2樓:自由de王國

你用的是pickle,它寫入檔案的內容不是讓人讀的,而是讓pickle讀的,所以你不用在意。你自己寫檔案試試,應該是漢字。

3樓:夢裡瀟瀟

是漢字亂碼嗎?

開始加上下面這句話

# -*- coding: utf-8 -*-

4樓:匿名使用者

庫不對 3.x就沒這個問題了

python279無法輸出中文

python2.7及以下,輸出字元預設為標準 ascii 0 127,也就是 byte字元 顯示亂碼應該是你輸出的是 utf 8 編碼字串,windows控制檯預設編碼是gbk 可以通過命令 chcp 65001 設定為utf 8 報錯是因為你輸出的是 unicode 字元 包含128 255 新人...

python內建模組無法呼叫,pycharm環境,怎麼辦

因為你執行的是 headers.py 不是 練習.py pycharm下無法匯入安裝好的第三方模組requests?在cmd下使用pip安裝好requests模組後,可以使用import requests,但在pycharm ide下無法匯入,出現如下錯誤 import requests trace...

無法顯示語言欄

1全部看你是使用2003 還是xp系統 要是xp系統的話了就設定兩個地方 1.開始,執行,msconfig,勾選ctfmon.exe控制面板 區域和語言選項 語言 詳細資訊 高階 不要選 關閉高階文字服務 2.開始 控制面板 日期 時間 語言和區域設定 區域和語言選擇 語言 詳細資訊 語言欄 選擇在...