導航:首頁 > 編程語言 > python顯示unicode

python顯示unicode

發布時間:2023-04-04 22:54:21

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')的時候,輸出結果和『漢字'結果一樣。

Ⅱ 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();

Ⅲ 如何理解python3的unicode,以及全形半形轉換

1. unicode是一個編碼的standard,表明了字元與數字之間的映射,是可變長的。

2. 映射後的數據如何編碼為位元組?這個就是具體的編碼規則:目前最主流的是UTF-8,同樣,它也是變字長的。

python3中的str都是unicode的:「The default encoding for Python source code is UTF-8」

python3中的encode:按照encode()括弧中的參數對字元串進行編碼,就是生成bytes。

所以:

In:'中文'.encode('utf-8')
Out:b'\xe4\xb8\xad\xe6\x96\x87'

這里的b就是Byte,\x表示這個x是被轉義的,意思就是0x。又如:

In: 'abc'.encode('utf-8')

Out: b'abc'

上面的b'a'其實表示的是數字97,b'a'的意思就是字元串'a'的binary數字:

[In]:'abc'.encode('utf-8')[0]

[Out]: 97

同時可以把b'\x'進行解碼,即:
In:b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
Out:'中文'
除了encode('utf-8')外,用ord可以獲得單個utf-8字元對應的數字:

In [60]: ord('a')
Out[60]: 97
In [61]: ord('a')#這個是全形的a
Out[61]: 65345

除了decode('utf-8')外,用chr可以獲得數字對應的utf-8字元:

In [62]: chr(97)
Out[62]: 'a'

除了unicode還有別的編碼標准嗎?有啊,比如我國的GBK,別名也叫cp936。

全形和半形之分,是指同樣一個意義的字元,顯示的大小不同.具體來說,全形和半形的編碼是兩個結果:

In [70]: "mn".encode('utf-8')
Out[70]: b'\xef\xbd\x8d\xef\xbd\x8e
[In]:"mn".encode('utf-8')

[Out]:b'mn'

它們有什麼對應關系呢?(引自這里)

轉換說明
全形半形轉換說明
有規律(不含空格):
全形字元unicode編碼從65281~65374 (十六進制 0xFF01 ~ 0xFF5E)
半形字元unicode編碼從33~126 (十六進制 0x21~ 0x7E)
特例:
空格比較特殊,全形為 12288(0x3000),半形為 32(0x20)
除空格外,全形/半形按unicode編碼排序在順序上是對應的(半形 + 0x7e= 全形),所以可以直接通過用+-法來處理非空格數據,對空格單獨處理。
代碼在此基礎上改動一下(將unichr改為chr即可,適應python3),即:

def strQ2B(ustring):
"""全形轉半形"""
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code == 12288: #全形空格直接轉換
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): #全形字元(除空格)根據關系轉化
inside_code -= 65248
rstring += chr(inside_code)
return rstring

In [69]: strQ2B('你好python')
Out[69]: '你好python'

Ⅳ python unicode麻煩幫我按句解釋下,unicode()函數作用到底是什麼

UNICODE函數wei 預先編寫的公式,可以對一個或多個值執行運算,並返回一個或多個值。函數可以簡化和縮短工作表中的公式,尤其在用公式執行很長或復雜的計算時的公式語法和用法。如果文本包含部分代理項或數據類型無效,則UNICODE返回錯誤值#VALUE!。

Unicode通常用兩個位元組表示一個字元,原有的英文編碼從單位元組變成雙位元組,只需要把高位元組全部填為0就可以。

因為Python的誕生比Unicode標准發布的時間還要早,所以最早的Python只支持ASCII編碼,普通的字元串ABC在Python內部都是ASCII編碼的。



(4)python顯示unicode擴展閱讀

Unicode為了解決傳統的字元編碼方案的局限而產生的,例如ISO 8859所定義的字元雖然在不同的國家中廣泛地使用,可是在不同國家間卻經常出現不兼容的情況。

很多傳統的編碼方式都有一個共同的問題,即容許電腦處理雙語環境(通常使用拉丁字母以及其本地語言),但卻無法同時支持多語言環境(指可同時處理多種語言混合的情況)。

Unicode編碼包含了不同寫法的字,如「ɑ/a」、「戶/戶/戸」。然而在漢字方面引起了一字多形的認定爭議。

閱讀全文

與python顯示unicode相關的資料

熱點內容
php論壇實訓報告 瀏覽:403
java日期字元串轉換成日期 瀏覽:135
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345