Ⅰ python print出unicode碼怎麼辦
defchar_ok_but_show_messy():
"""
,withsomeencoding,
"""
#此處,當前Python文件是UTF-8編碼的,所以如下的字元串,是UTf-8編碼的
cnUtf8Char="我是UTF-8的中文字元串";
#所以,將UTF-8編碼的字滑櫻符串,列印輸出到GBK編碼的命令行(Windows的cmd)中,就會顯示出亂碼
print"cnUtf8Char=",cnUtf8Char;#cnUtf8Char=鎴戞槸UTF-8鐨勪腑鏂囧瓧絎︿覆
#如果想要正確顯示出中文字元,不顯示亂碼的話,則有兩種選擇:
#1.把字信磨叢符串轉換為Unicode編碼,則輸出到GBK的命令行時,Python會自動將Unicode的字元串,編碼為GBK,然後正確顯示字元
decodedUnicodeChar=cnUtf8Char.decode("UTF-8");
print"decodedUnicodeChar=",decodedUnicodeChar;#decodedUnicodeChar=我是UTF-8的中文字元串
#2.讓字元串的編碼和輸入目標(windows的cmd)的編碼一致:把當前的字元串(由上述解碼後得到的Unicode再次去編碼)也變成GBK,然後輸出到GBK的命令行時,就可以正確游吵顯示了
reEncodedToGbkChar=decodedUnicodeChar.encode("GBK");
print"reEncodedToGbkChar=",reEncodedToGbkChar;#reEncodedToGbkChar=我是UTF-8的中文字元串
###############################################################################
if__name__=="__main__":
char_ok_but_show_messy();
Ⅱ 用Python 將UCS2轉成GBK的編碼格式
直接支持全球所有語言,胡滲消每個國家都可以不喊畝用再使用自己之前的舊編碼了,用unicode就可以了。(就跟英語是全球統一語言一樣)
unicode包含了跟全球所有國褲知家編碼的映射關系。
Ⅲ python 如何將亂碼轉成漢字
1、python2與python3稍微有點區別
2、python2中默認的字元編碼格式都是unicode,在字元串前加'u',表示unicode 編碼
3、將unicode轉換成中文,只需要用deconde解碼就可以了
>>> u='歡迎'>>> e=u.encode()>>> eb'\xe6\xac\xa2\xe8\xbf\x8e'>>> e.decode()#python3中默認就是utf-8編碼'歡迎'>>> e.decode('gbk')#如果解碼為gbk就是亂碼'嬈四繋'
python2編碼環境比較復雜,在這里不做詳細說明
Ⅳ python命令行輸入中文亂碼怎麼辦
python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。
在python3不存在該問題
運行結果:
原因
中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。
相關推薦:《Python基礎教程》
解決方法
有如下兩種方法可以解決這個問題
方法一
我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:
修改後運行結果:
方法二
當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:
·chcp 65001 就是換成UTF-8代碼頁
·chcp 936 可以換回默認的GBK
但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。
Ⅳ python怎麼知道一個字元串的編碼方式
字元串的編碼,有很多種如utf-8,gb2312,gbk,gb18030,bz2,zlib,big5,bzse64
python 對編碼的處理有兩個方法,decode()和 encode()方法
a='你好'
b='python'
printa.decode('utf-8').encode('gbk')##decode方法把字元串轉換為unicode對象,然後通過encode方法轉換為指定的編碼字元串對象
printb.decode('utf-8')##decode方法把字元串轉換為unicode對象
所以要讓python(或者說機器)來識別字元串的編碼,是一件很困難的事。編碼就是漢字和整數之間的對應,同一個整數,可以在不同的編碼中,都有對應的漢字。比如下面的例子,比特流'xe6xb0xb4xe5xa3xb6'在四種編碼中都有對應的漢字,但只有在utf-8編碼下,它對應的漢字才有意義。我們可以一眼看出這點,可是要讓計算機做到這點,就很難了。
>>>s='水壺'
>>>s
18:'xe6xb0xb4xe5xa3xb6'
>>>printunicode(s,'big5')
瘞游ㄥ
>>>printunicode(s,'gbk')
姘村6
>>>printunicode(s,'gb2312')
姘村6
>>>printunicode(s,'utf-8')
水壺
Ⅵ python中怎樣將unicode轉換成原來的中文
python默認就是unicode存儲。如果是從文件讀取的,在open的參數中指定encoding關鍵字參數就行。如下:
#coding=utf-8/importjson /defLoadQuestion(): /f=open("test.json",'r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")
通常python2時所有IO讀寫都是byte方式。也就是編碼後的。java也是這樣子。只有python3還有某些特定的模塊才會自動將byte重新轉換成unicode
在python2里的確可以使用s.decode('gbk','ignore')之類的變成unicode。不過在python3里應該是這樣子, s.encode('gbk','ignore')這樣就變成了byte
如果你喜歡 utf-8,可以s.encode(『utf-8','ignore')和s.decode(『utf-8','ignore')
Ⅶ python 字元串格式的unicode編碼轉中文
python對於Unicode編碼可以使用decode進行轉換成中文:
>>> str = b'\xe8\xb4\xb9\xe8\x84\x91\xe5\xad\x90'
>>> str.decode('utf-8')
'費腦子'
如果是字元串類型的Unicode編碼沒辦法直接用decode進行轉換:
>>> str ="\\xe8\\xb4\\xb9\\xe8\\x84\\x91\\xe5\\xad\\x90"
>>> str.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
AttributeError: 'str' object has no attribute 'decode'
處理方式:
>>> str = eval("b" + "\"" + str + "\"")
>>> str.decode('utf-8')
'費腦子'
Ⅷ python中 gbk字元串被識別為unicode(就是讀取到的應該是'內容內容'變成了 u'內容內容',這樣應該如何解碼
你用的是哪個庫 ,如果是pymssql 的態握殲話,我皮李建議換個庫我測試末尾帶b字樣的版本沒有這個問題
有些庫是有這樣的問題,所有編碼自己加上U,嘗試更換庫試一下
剛才網路了一下,看到一個解決辦法不錯,考慮轉載到我的空間,我確帆沖實遇到了這樣的問題
方法如下:
python 提供了一個特殊的編碼(raw_unicode_escape)用來處理這種情況:
In[4]:u'xe4xbdxa0xe5xa5xbd'.encode('raw_unicode_escape')
Out[4]:'xe4xbdxa0xe5xa5xbd'
In[5]:u'xe4xbdxa0xe5xa5xbd'.encode('raw_unicode_escape').decode('utf8')
Out[5]:u'u4f60u597d'
In[7]:printu'u4f60u597d'
你好
以前雜沒發現這個方法呢...我遇到這個問題是找個關天,換了個庫才搞定
Ⅸ Python 編碼轉換與中文處理
python 中的 unicode 是讓人很困惑、比較難以理解的問題. 這篇文章 寫的比較好, utf-8是 unicode的一種實現方式,unicode、gbk、gb2312是編碼字元集.
Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用" 編碼指示 "來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的編碼如:gbk、gb2312也可以;否則會出現:
先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode ,他們都是basestring的派生類;
在str的文檔中有這樣的一句話:
也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。
unicode 轉為 gb2312,utf-8等,使用 encode(encoding)
utf-8,GBK轉換為 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)
普通的 str 轉為 unicode,
如果直接執行s.encode('gb2312')會發生什麼?
這里會發生一個異常:Python 會自動的先將 s 解碼為 unicode ,然後再編碼成 gb2312。因為解碼是python自動進行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個類型就會出錯。
拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯了:
對於這種情況,我們有兩種方法來改正錯誤:
s = '中文'
s.decode('utf-8').encode('gb2312') ```
import sys
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
print open("Test.txt").read()
import codecs
print open("Test.txt").read().decode("utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
s = "中文"
print unicode(s, "utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
s = "中文"
print unicode(s, "gbk")
s = "中文"
print unicode(s, "cp936")
Ⅹ Python json unicode轉中文
importsys
reload(sys)
sys.setdefaultencoding("utf-8")
result=[[u'9.6',u'50'],1,True,u'1292052',[u'u72afu7f6a',u'u5267u60c5'],[u'u7f8eu56fd'],u'',u'1994-09-10',15,725531,u'9.6']
f=open('data.csv','w')
foriinresult:
iftype(i)islist:
forjini:
iftype(j)==intortype(j)==floatortype(j)==bool:
j=str(j)+','
else:
j=j.encode('gbk')+','
printj,
print>>f,j,
else:
iftype(i)==intortype(i)==floatortype(i)==bool:
i=str(i)+','
else:
i=i.encode('gbk')+','
printi,
print>>f,i,
f.close()