導航:首頁 > 編程語言 > 漢字轉unicode編碼python

漢字轉unicode編碼python

發布時間:2023-03-01 08:28:44

『壹』 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怎麼將字典的編碼轉換成unicode

decode的作用是將其他編碼的字元串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字元串轉換成unicode編碼。 encode的作用是將unicode編碼轉換成其他編碼的字元串,如str2.encode('gb2312'),表示將unicode編碼的字元串轉換成

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

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

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

『肆』 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

方法是絕對可行的

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

『伍』 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')

'費腦子'

閱讀全文

與漢字轉unicode編碼python相關的資料

熱點內容
硬體加密機性能測試 瀏覽:823
程序員貼面膜的正確方法 瀏覽:74
如何開啟app步數授權 瀏覽:22
linuxmaven路徑 瀏覽:137
python爬qq說說 瀏覽:416
linuxmap文件 瀏覽:67
轉轉app如何搜索快手主播 瀏覽:776
移動硬碟文件夾成0位元組 瀏覽:683
夢幻西遊解壓視頻大全 瀏覽:252
解壓小視頻手速 瀏覽:152
我的世界伺服器卡沒血如何修改 瀏覽:161
vba入門到精通pdf 瀏覽:113
tomcat怎麼一個伺服器部署 瀏覽:797
phphttps介面 瀏覽:895
javabyte數組int 瀏覽:810
公司網路共享的文件夾 瀏覽:1000
拍臉搭配衣服是什麼app 瀏覽:916
歐珀手機怎麼更改加密密碼 瀏覽:508
程序員那麼可愛陸漓氣人語錄 瀏覽:904
python中del刪除 瀏覽:461