導航:首頁 > 編程語言 > python中的unicode值

python中的unicode值

發布時間:2022-10-18 05:10:32

1. python 怎麼把字元轉換為unicode編碼

實現代碼如下:
a
=
'abce'#
print
type(a)b
=
a.decode("ascii")#
print
type(b)c
=
a.decode("ascii").encode("utf-8")#
print
type(c)
在python中進行編碼轉換都是通過unicode作為中間值實現的。所以要先decode成unicode字元,然後再使用encode轉換成utf-8編碼的str。可以把注釋取消了,看下轉換過程中的類型。

2. python怎麼轉換unicode編碼

用decode()就行。decode()方法必須傳入一個參數,這個參數就是當前待轉碼的編碼,此函數方法的用意就是將當前編碼為Unicode編碼。

比如就你這提問的此頁面:

#使用版本是python2.
importurllib
url='https://..com/question/1499967322379602619.html?entry=qb_ihome_tag&hideOtherAnswer=true&newAnswer=1'
html=urllib.urlopen(url).read()
result=html.decode('gbk')
printresult

方法是絕對可行的

此法對字元串和文檔內容的解碼一樣有效。

3. 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()函數。

4. python中string和Unicode的區別

首先要弄清楚的是,在python里,string object和unicode object是兩種不同的類型。

string object是由characters組成的sequence,而unicode object是Unicode code units組成的sequence。

string里的character是有多種編碼方式的,比如單位元組的ASCII,雙位元組的GB2312等等,再比如UTF-8。很明顯要想解讀string,必需知道string里的character是用哪種編碼方式,然後才能進行。

Unicode code unit又是什麼東西呢?一個Unicode code unit是一個16-bit或者32-bit的數值,每個數值代表一個unicode符號。在python里,16-bit的unicode,對應的是ucs2編碼。32-bit對應的是ucs4編碼。是不是感覺string里character的編碼沒什麼區別?反正我現在腦子里就是這樣一個印象:在Python里,ucs2或者ucs4編碼的,我們叫做unicode object,其他編碼的我們就叫做string。

至於python里的unicode到底是ucs2還是ucs4的,可以在編譯時指定。例如Linux下,要用ucs2做unicode的編碼,可以這樣
# ./configure --enable-unicode=ucs2
# make
# make install
下載的Windows預編譯版本,一般都是ucs2的。要想知道某個python運行環境是ucs2還是ucs4,可以查看sys.maxunicde,65535就是ucs2的,另一個很大的數值就是ucs4。

下面我們看看string和unicode在python里的不同
我們先看看在簡體中文Windows 2003系統下,系統編碼是GBK
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__
<type 'str'>
>>> b.__class__
<type 'unicode'>
>>> len(a)
4
>>> len(b)
2

在一個系統編碼為UTF-8的Linux環境下
>>> a = '你好'
>>> a
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__
<type 'str'>
>>> b.__class__
<type 'unicode'>
>>> len(a)
6
>>> len(b)
2

如何?簡單總結一下:
1、string直接用引號來表示,unicode在引號前加一個u
2、直接輸入的string常量會用系統預設編碼方式來編碼,例如在GBK環境下,'你好'會編碼成'/xc4/xe3/xba/xc3',而在UTF-8環境下就成了'/xe4/xbd/xa0/xe5/xa5/xbd'。
3、len(string)返回string的位元組數,len(unicode)返回的是字元數
4、很重要的一點,print unicode不會亂碼。現在我們常用的Linux、Windows系統,都是支持unicode的,版本太老的不算。比如Windows 2003支持ucs2,所以在中文Windows2003下,除了可以正常顯示預設的GBK編碼外,還可以正常顯示ucs2編碼。舉個例子,還是在中文Windows 2003的GBK環境下:
>>>a = '/xe4/xbd/xa0/xe5/xa5/xbd' # UTF-8的'你好'
>>> print a
浣犲ソ
>>> b = unicode(a, "UTF-8")
>>> b
u'/u4f60/u597d'
>>> print b
你好

應該明白了吧?

下面再說說string和unicode的相互轉換,什麼unicode()、decode()、encode()、codecs之類的。

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

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

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

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



(5)python中的unicode值擴展閱讀

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

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

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

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

7. 了解python中bytes,str和unicode的區別

首先來說把Unicode轉換為為原始8位值(二進制數據),有很多種辦
編寫Python程序的時候,核心部分應該用Unicode來寫,也就是python3中的str,python2中的unicode
python3中2種表示字元序列的類型:bytes和str
前者的實例包含了原始8位值,後者的實例包含了Unicode字元
python3中接受bytes和str,並總是返回str:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, bytes):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234

python3中接受bytes和str,並總是返回bytes:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234

python2中2種表示字元序列的類型:unicode和str
與python3剛好相反:後者的實例包含了原始8位值,前者的實例包含了Unicode字元
python2中接受unicode和str,並總是返回unicode:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234

python2中接受unicode和str,並總是返回str:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, unicode):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234

python2和python3需要注意的事情
1.python2中如果str只包含7位的ASCII字元,那麼unicode和str 就是同一種類型,可以+操作
2.python3內置的open函數獲取文件句柄,默認採用utf-8的格式操作文件,python2則默認是二進制
python2 的寫法:
with open("/temp/file.bin",'w')as f :
f.write(os.urandom(10))12

python3 的寫法:
with open("/temp/file.bin",'wb')as f :
f.write(os.urandom(10))12

ps:如何讓你的代碼pythonic

8. Python2.7 中文字元編碼,使用Unicode時,選擇什麼編碼格式

關於編碼和亂碼的問題,我簡單講一下。

通常問這類問題的人是混淆了若干個不同的概念,並且他們自己也沒有意識到自己混淆了這些概念的。

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

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

10. python中u'string'和unicode('string')有什麼區別

首先要弄清楚的是,在python里,string object和unicode object是兩種不同的類型。

string object是由characters組成的sequence,而unicode object是Unicode code units組成的sequence。

string里的character是有多種編碼方式的,比如單位元組的ASCII,雙位元組的GB2312等等,再比如UTF-8。很明顯要想解讀string,必需知道string里的character是用哪種編碼方式,然後才能進行。

Unicode code unit又是什麼東西呢?一個Unicode code unit是一個16-bit或者32-bit的數值,每個數值代表一個unicode符號。在python里,16-bit的unicode,對應的是ucs2編碼。32-bit對應的是ucs4編碼。是不是感覺string里character的編碼沒什麼區別?反正我現在腦子里就是這樣一個印象:在Python里,ucs2或者ucs4編碼的,我們叫做unicode object,其他編碼的我們就叫做string。

至於python里的unicode到底是ucs2還是ucs4的,可以在編譯時指定。例如Linux下,要用ucs2做unicode的編碼,可以這樣
# ./configure --enable-unicode=ucs2
# make
# make install
下載的Windows預編譯版本,一般都是ucs2的。要想知道某個python運行環境是ucs2還是ucs4,可以查看sys.maxunicde,65535就是ucs2的,另一個很大的數值就是ucs4。

下面我們看看string和unicode在python里的不同
我們先看看在簡體中文Windows 2003系統下,系統編碼是GBK
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
4
>>> len(b)
2

在一個系統編碼為UTF-8的Linux環境下
>>> a = '你好'
>>> a
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
6
>>> len(b)
2

如何?簡單總結一下:
1、string直接用引號來表示,unicode在引號前加一個u
2、直接輸入的string常量會用系統預設編碼方式來編碼,例如在GBK環境下,'你好'會編碼成'/xc4/xe3/xba/xc3',而在UTF-8環境下就成了'/xe4/xbd/xa0/xe5/xa5/xbd'。
3、len(string)返回string的位元組數,len(unicode)返回的是字元數
4、很重要的一點,print unicode不會亂碼。現在我們常用的Linux、Windows系統,都是支持unicode的,版本太老的不算。比如Windows 2003支持ucs2,所以在中文Windows2003下,除了可以正常顯示預設的GBK編碼外,還可以正常顯示ucs2編碼。舉個例子,還是在中文Windows 2003的GBK環境下:
>>>a = '/xe4/xbd/xa0/xe5/xa5/xbd' # UTF-8的'你好'
>>> print a
浣犲ソ
>>> b = unicode(a, "UTF-8")
>>> b
u'/u4f60/u597d'
>>> print b
你好

應該明白了吧?

下面再說說string和unicode的相互轉換,什麼unicode()、decode()、encode()、codecs之類的。

閱讀全文

與python中的unicode值相關的資料

熱點內容
8051單片機包含多大的ram 瀏覽:811
man文件linux 瀏覽:282
javaweb實現頁面跳轉 瀏覽:125
命令如什麼 瀏覽:315
centos如何使用ftp伺服器 瀏覽:981
直立車陀螺儀演算法 瀏覽:69
coreldrawpdf下載 瀏覽:895
虛擬主機雲伺服器軟體服務 瀏覽:370
蘋果的怎麼拉安卓的打游戲 瀏覽:412
游戲程序員負責角色 瀏覽:313
於丹pdf 瀏覽:716
反編譯ref 瀏覽:550
鴻蒙智能文件夾怎麼弄 瀏覽:547
grunt壓縮html 瀏覽:791
macpdfword轉換器 瀏覽:907
壓縮面膜是什麼材質 瀏覽:355
抖音發布作品怎麼建文件夾 瀏覽:17
安卓如何更改谷歌地區 瀏覽:276
airpods為什麼安卓連上聲音很大 瀏覽:514
聯想伺服器按鈕怎麼開不了機 瀏覽:99