導航:首頁 > 編程語言 > pythonunicode碼的輸出

pythonunicode碼的輸出

發布時間:2022-12-21 01:16:53

A. python3 中文輸出亂碼問題

python 3和2很大區別就是python本身改為默認用unicode編碼。
字元串不再區分"abc"和u"abc", 字元串"abc"默認就是unicode,不再代表本地編碼、
由於有這種內部編碼,像c#和java類似,再沒有必要在語言環境內做類似設置編碼,比如「sys.setdefaultencoding」;
也因此也python 3的代碼和包管理上打破了和2.x的兼容。2.x的擴展包要適應這種情況改寫。

另一個問題是語言環境內只有unicode怎麼輸出gbk之類的本地編碼。

答按慣例都在(序列化)輸出時才轉換成本地編碼。
比如

file.write("GBK的中文".encode("GBK"))

python環境內字元串用str.encode("GBK")方法輸出成位元組串用於和其他環境交流。

B. python123漢字的unicode編碼值

python的默認編碼是ascii,可以通過sys.setdefaultencoding('utf-8')函數設置python的默認編碼。

python中可以通過encode和decode的方式改變數據的編碼,比如:

>>> u'漢字'

u'\u6c49\u5b57'

>>> u'漢字'.encode('utf-8')

'\xe6\xb1\x89\xe5\xad\x97'

>>> u'漢字'.encode('utf-8').decode('utf-8')

u'\u6c49\u5b57'

我們可以通過這兩個函數設置編碼。

那麼,python中的str是什麼類型?

>>> import binascii

>>> '漢字'

'\xba\xba\xd7\xd6'

>>> type('漢字')

>>> print binascii.b2a_hex('漢字')

babad7d6

>>> print binascii.b2a_hex(u'漢字')

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'ascii' codec can't encode characters in

position 0-1: ordinal not in range(128)

>>> print binascii.b2a_hex(u'漢字'.encode('utf-8'))

e6b189e5ad97

>>> print binascii.b2a_hex(u'漢字'.encode('gbk'))

babad7d6

binascii是將數據的二進制轉換成ascii,上面的解釋是:『漢字'的類型是str,二進制是babad7d6,u『漢字'是無法轉換成ascii,這樣就報出了開頭的第一個錯誤。解決辦法就是把它.encode(『utf-8')成str類型。因為我命令行是windows默認的GBK編碼,所有u'漢字'.encode(『gbk')的時候,輸出結果和『漢字'結果一樣。

C. python unicode編碼

python unicode編碼:

下面的代碼創建了一個Unicode字元串,用UTF-8編碼器將它編碼,然後寫入到一個文件中去,接著把數據從文件中讀回來,解碼成Unicode字元串對象,最後,列印出Unicode字元串,用以確認程序正確地運行。

在Linux中編寫,在VIM中輸入如下代碼,保存為uniFile.py

#/home/xiaopeng/python/code/uniFile.py
'''
:Writes
aUnicodestringtoafileinutf-8andreadsitbackin
'''
CODEC='utf-8'編碼方式
FILE='unicode.txt'要存的文件名
hello_out=u"Helloworld "創建了一個Unicode格式的字元串
bytes_out=hello_out.encode(CODEC)用UTF-8編碼
f=open(FILE,'w')
f.write(bytes_out)寫入指定文件中
f.close()
f=open(FILE,'r')
bytes_in=f.read()讀取
f.close()
hello_in=bytes_in.decode(CODEC)解碼
printhello_in列印

在終端中輸入:python uniFile.py

結果列印出 Hello world

然後在python目錄下會發現多了一個名為unicode.txt的文件,用cat命令查看一下,發現裡面的內容和列印的結果一樣.

把Unicode應用到實際中注意一下四點:

1程序中出現字元串時一定要加一個前綴u

2不要用str()函數,用Unicode()代替

3 不要用過時的string模塊。如果傳給它非ASCII碼,它會把一切搞砸。

4 不到必須時不要在你的程序里編解碼Unicode字元,只在你要寫入文件或者資料庫或者網路時,才調用encode()函數和decode()函數。

D. Python讀入一個整數n和一個Unicode碼值u

輸出到屏幕時寬度為11個字元
鍵盤輸入一個9800到9811之間的正整數n,作為Unicode編碼,把n-1、n和n+1三個Unicode編碼對應字元按照格式要求輸出到屏幕:寬度為11個字元。

E. python輸出到文件亂碼如何解決

python代碼文件的編碼
py文件默認是ASCII編碼,中文在顯示時會做一個ASCII到系統默認編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼文件的第一行或第二行添加編碼指示:
1 # coding=utf-8 ##以utf-8編碼儲存中文字元
2 print '中文'
像上面那樣直接輸入的字元串是按照代碼文件的編碼來處理的,如果用unicode編碼,有以下三種方式:
1 s1 = u'中文' #u表示用unicode編碼方式儲存信息
2 s2 = unicode('中文','gbk')
unicode是一個內置函數,第二個參數指示源字元串的編碼格式。
decode是任何字元串具有的方法,將字元串轉換成unicode格式,參數指示源字元串的編碼格式。
encode也是任何字元串具有的方法,將字元串轉換成參數指定的格式。
(2)、字元串的編碼
用 u'漢字' 構造出來的是unicode類型,不用的話構造出來是str類型
str的編碼是與系統環境相關的,一般就是sys.getfilesystemencoding()得到的值
所以從unicode轉str,要用encode方法
從str轉unicode,所以要用decode
例如:
# coding=utf-8 #默認編碼格式為utf-8
s = u'中文' #unicode編碼的文字
print s.encode('utf-8') #轉換成utf-8格式輸出
但當python中間處理非ASCII編碼時,經常會出現如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的數字,python在默認的情況下認為語言的編碼是ascii編碼,所以無法處理其他編碼,需要設置python的默認編碼為所需要的編碼。
一個解決的方案是在代碼中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8為你想輸出的字元編碼)
解釋:
sys.setdefaultencoding方法在python導入site.py後就刪除了(具體代碼查看site.py就可以看到)因此如果想用的話可以再重新load進入
總結:
u=u'unicode編碼文字'
g=u.encode('gbk') #轉換為gbk格式
print g #此時為亂碼,因為當前環境為utf-8,gbk編碼文字為亂碼
str=g.decode('gbk').encode('utf-8') #以gbk編碼格式讀取g(因為他就是gbk編碼的,需要事先知道它是GBK編碼)並轉換為utf-8格式輸出
print str #正常顯示中文(同文件輸出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk編碼讀取(當然是讀取gbk編碼格式的文字了)並忽略錯誤的編碼,轉換成utf-8編碼輸出。
推薦學習《Python教程》!

閱讀全文

與pythonunicode碼的輸出相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163