可以的呀,記得在py文件的頭上加上#coding=utf-8
使用中文字元串的時候字元串用unicode對象,即u』中文字元串『
⑵ python無法匹配中文,源文件為gb2312
re.match只能匹配「4月」出現在字元串頭部的情況,也就是每行頭部的情況。
4月出現在中間是匹配不到的。
⑶ 為什麼python腳本中使用中文會報錯 解決方法已知.. 只想知道詳細的原因
開頭添上針對不同平台的中文編碼。
一般linux下用
# -*- coding: utf-8 -*-
windows下gbk
# -*- coding: gbk -*-
⑷ 在pycharm學python 怎麼識別漢子
PyCharm配置
PyCharm默認Python腳本編碼是UTF-8,我們將其設置為GBK:
進入file>setting,在輸入框搜索encoding
保存設置並重啟PyCharm,這樣默認編碼就生效了,可在右下角查看
END
Python 2
筆者使用的Python版本是2.7.11。Python 2 的中文支持需要做兩件事:
①在代碼前端增加代碼:# -*-coding:gbk-*-
②在中文前加u前綴,如:u"你好"
運行代碼,檢查是否已成功支持中文字元
END
Python 3
筆者使用的Python版本是3.5.1。Python 3 的中文支持只需要做一件事即可:
①在代碼前端增加代碼:# -*-coding:gbk-*-
⑸ 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 保存對話框無法識別中文
參考這幾點
代碼前面加上 #coding:utf-8
代碼中設計到中文的時候 使用 u開頭定義為unicode字元串,如 s=u'網路'
使用encode,decode方法進行編碼轉換
s.encode('utf-8')unicode轉換為utf-8編碼str
s.decode('gbk') gbk編碼str轉換為unicode
⑺ 請問,python打開中文字元文件,但顯示不出中文怎麼辦
一般是編碼格式的問題,python內部默認的編碼格式是utf-8,常見的文本編碼格式是utf-8,gbk。編碼格式不不一致就會亂碼。可以在代碼前面申明編碼格式。
⑻ python2中為什麼交互界面可以識別中文,而文件無法識別
Python中的字元串的大概分為為str和Unicode兩種形式,其中str常用的編碼類型為utf-8,gb2312,gbk等等,Python使用Unicode作為編碼的基礎類型。str記錄的是位元組數組,只是某種編碼的存儲格式,終於輸出到文件或是列印出來是什麼格式,完全取決於其解碼的編碼將他解碼成什麼樣子;Unicode是一種類似於符號集的抽象編碼,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼該如何存儲,也就是它只是一種內部表示,不能直接保存,所以存儲時需要規定一種存儲形式,比如utf-8等。
Python中有編碼轉換的函數有:
decode(char_set) 實現char_set解碼成Unicodeencode(char_set) 實現Unicode編碼成char_set
查看Python文檔會發現:
open(filename, 'w')這個方法中,filename這個參數必須是Unicode編碼的參數。
我之前加上#-*-coding:utf-8-*-將編碼設置為utf-8,當調用這個方法往裡傳參數時,需要將這個變數filename解碼成Unicode。
比如filename='中文.txt',使用open()時,這樣寫open(filename.decode('utf-8'), 'w'),這樣創建的中文文件名就沒有亂碼問題了。
⑼ python3不能使用中文怎麼辦
Python3對中文的支持非常全面。在Python中,源文件默認使用的是UTF-8編碼,這樣一來,不單可方便地在源代碼的字元串中使用中
文,而且變數名也可以使用中文。
2、在Python3中不需要來回的編碼和解碼,直接使用print函數即可輸出變數的內容
3、在Python3中,字元串對象沒有decode和encode方法。
推薦學習《python教程》。
⑽ Python中加了# -*- coding: utf-8 -*-,還是不能顯示中文
應該是windows系統識別編碼的問題。
將腳本文件的編碼 設置成 ANSI看看。
看你的顯示應該是learn python for hard way這本書唄,這書上都是py2的,你下一個py3版本,這種問題一般就不會出現了。