本文目錄一覽:
- 1、python 2.7輸出中文字元串出現錯誤如何解決
- 2、如何解決Python中文問題
- 3、python2中出現中文字元亂碼,怎麼處理
- 4、Python判斷字元串中是否有中文字元
- 5、Python中中文字元串怎麼處理?
python 2.7輸出中文字元串出現錯誤如何解決
由於漢字不屬於ASCII編碼表中的字元,因此,無論是在Python交互模式還是執行模式,很多時候都無法正常輸出中文。
那麼,怎樣才能保證每一個漢字都能有唯一一個編碼,不出現錯誤呢?
推薦涉及非ASCII碼的程序使用Python內置的Unicode編碼類型。
一般,在字元串前面加上u,即可聲明為Unicode字元串。
或者,根據Python平台編碼(cp936)來轉換為Unicode:
unicode(‘你好’, ‘cp936’)
然後,就可以給每一個漢字正確編碼,正確輸出了。
如何解決Python中文問題
python的中文問題一直是困擾新手的頭疼問題,Python的發行版至今尚未包括任何中文支持模塊。當然,幾乎可以確定的是,在將來的版本中,python會徹底解決此問題,不用我們這麼麻煩了。 筆者使用的是2.5版本。Python的版本可以通過調用sys模塊的sys.version查看。在幾個月的學習中,主要遇到以下問題:
1. print列印中文的問題:
在編輯器中輸入一段測試代碼:
s=』測試』
print s
運行結果如下:
Non-ASCII character ‘\xb2’ in file c:\Documents and Settings\Administrator\桌面\2.py on line 1, but no encoding declared; see for details: 2.py, line 1, pos 0
原因是如果文件里有非ASCII字元,需要指定編碼聲明。把2.py文件的編碼重新改為utf-8,並加上編碼聲明:
# -*- coding: utf-8 -*-
s=』測試』
print s
運行後可以正確列印中文。
2.中文路徑的問題。
在D盤下保存一個名字為『中文.txt『的文件。運行如下測試代碼:
# -*- coding: utf-8 -*-
f=open(‘D:\\中文.txt’, ‘r’)
print f.read()
運行結果如下:
IOError: [Errno 2] No such file or directory: ‘D:\\\xe4\xb8\xad\xe6\x96\x87.txt’
字元串有很多的編碼,不同的系統和平台有各自的編碼 ,為了實現系統或平台之間的信息交互可能需要編碼轉換。這裡只需要先使用UNICODE編碼一下,這樣再讀取中文路徑就不會有問題了:
複製代碼
# -*- coding: utf-8 -*-
path=’D:\\中文.txt’
spath=unicode(path , “utf8”)
f=open(spath,’r’)
print f.read()
複製代碼
然後就可以正確顯示文件內容
總結:
所有的中文顯示問題都可以歸結為編碼問題,遇到其他類似的問題,那隻能仔細看文檔,靠你的經驗,靠你多做測試。而且根據python所報出來的錯誤一般也可以判斷出來。那麼當發現需要編碼轉換時,剩下的就是如何正確進行碼制轉換。
為了正確處理多語言文本,Python在2.0版後引入了Unicode字元串。從那時起,Python語言中的字元串就分為兩種:一種是2.0版之前就已經使用很久的傳統Python字元串,一種則是新的Unicode字元串。在Python語言中,一般的解決辦法是使用unicode()內建函數對一個傳統Python字元串進行「解碼」,得到一個Unicode字元串,然後又通過Unicode字元串的encode()方法對這個Unicode字元串進行「編碼」,將其「編碼」成為傳統Python字元串。
python2中出現中文字元亂碼,怎麼處理
在Python2.x中主要是字元編碼的問題,處理不好的話,會導致亂碼。
Python默認採取的ASCII編碼,字母、標點和其他字元只使用一個位元組來表示,但對於中文字元來說,一個位元組滿足不了需求。
Python判斷字元串中是否有中文字元
首先,在Python中字元串的表示是 用unicode編碼。所以在做編碼轉換時,通常要以unicode作為中間編碼。
decode的作用是將其他編碼的字元串轉換成unicode編碼,比如 a.decode(‘utf-8’),表示將utf-8編碼的字元串轉換成unicode編碼
encode的作用是將unicode編碼的字元串轉換成其他編碼格式的字元串,比如b.encode(‘utf-8’),表示將unicode編碼格式轉換成utf-8編碼格式的字元串
判斷一個字元串中是否含有中文字元:
好了,有了以上知識,就可以很容易的解決這個問題了。這是代碼
1 #-*- coding:utf-8 -*-
2
3 import sys
4 reload(sys)
5 sys.setdefaultencoding(‘utf8’)
6
7 def check_contain_chinese(check_str):
8 for ch in check_str.decode(‘utf-8’):
9 if u’\u4e00′ = ch = u’\u9fff’:
10 return True
11 return False
12
13 if __name__ == “__main__”:
14 print check_contain_chinese(‘中國’)
15 print check_contain_chinese(‘xxx’)
16 print check_contain_chinese(‘xx中國’)
17
18 結果:
19 True
20 False
21 True
Python中中文字元串怎麼處理?
如果處理的字元串中出現中文表示的字元,要想不出錯,就得轉成unicode編碼了。具體的方法有:
1、decode(),將其他邊編碼的字元串轉換成unicode編碼,如str1.decode(‘gb2312’),表示將gb2312編碼的字元串str1轉換成unicode編碼;
2、encode(),將unicode編碼轉換成其他編碼的字元串,如str2.encode(‘gb2312’),表示將unicode編碼的字元串str2轉換成gb2312編碼;
3、unicode(),同decode(),將其他編碼的字元串轉換成unicode編碼,如unicode(str3, ‘gb2312’),表示將gb2312編碼的字元串str3轉換成unicode編碼。
轉碼的時候一定要先搞明白字元串str是什麼編碼,然後decode成unicode,最後再encode成其他編碼。
另外,對一個unicode編碼的字元串在進行解碼會出錯,所以在編碼未知的情況下要先判斷其編碼方式是否為unicode,可以用isinstance(str, unicode)。
不僅是中文,以後處理含非ascii編碼的字元串時,都可以遵循以下步驟:
1、確定源字元的編碼格式,假設是utf8;
2、使用unicode()或decode()轉換成unicode編碼,如str1.decode(‘utf8’),或者unicode(str1, ‘utf8’);
3、把處理後字元串用encode()編碼成指定格式。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197063.html