gb2312轉utf8python
❶ micropython中怎麼將gb2312編碼的位元組流變成中文
micropython中好像還沒有unicode方面的支持,中文解碼也還沒有。
不過可以參考這樣的想法,GB2312編碼的漢字都是雙位元組,ASC碼都是大於127的.這樣如果連續兩個字元都是大於127的,就可以當成一個漢字處理。
❷ python怎麼把ASNI(GB2312)轉換成UTF-8
#!/usr/bin/envpython3
fromchardetimportdetect
fn='a.txt'
withopen(fn,'rb')asf:
s=f.read()
coding=detect(s)['encoding']
print('coding:{}'.format(coding))
print('content:{}'.format(s.decode(coding).rstrip()))
newf='b.txt'
withopen(newf,'wb')asf:
f.write(s.decode(coding).encode('utf8'))
print('done!convertcodingtoutf-8andwirtecontentin`{}`'.format(newf))
如果報ImportError那就
pipinstallchardet
def 你理解代碼後自己整合吧
❸ python 解析xml 是不是只能解析編碼格式為utf-8的gb2312不行嗎
據我了解,minidom只支持utf-8文件的解析,所以在解析之前不管用什麼方法,最好確保文件是utf-8格式的,話說python的文本操作通常用utf-8都是沒什麼問題的,其它編碼方式多多少少都有些麻煩,所以生成文件的時候盡量少用中文編碼!
❹ 如何處理python編碼轉換時的UnicodeDecodeError異常
原始編碼錯誤,比如原始是utf8,你當成gb2312解就報這個錯,LZ也可以搜一下我的回答。有一些類似問題
❺ python 如何將windows-1252轉換為utf-8
巧了 , 我也碰到這個問題 . 不過我那個是標著 gb2312 , 代碼 檢測 出來是 window-1252 , 實際上是 gb18030
❻ 我在寫一個python的網路爬蟲,寫入記事本的內容都是亂碼如何使寫入的數據以utf8或者gb2312的碼制寫入。
我從自己一個utf8的爬蟲程序裡面摘的。
程序開頭:
#!/usr/bin/envpython
#-*-coding:utf8-*-
importurllib
importurllib2
importstring
importre
importsys
type0=sys.getfilesystemencoding()#解決中文亂碼問題
後面做抓取程序的時候全部加上decode和encode。
pos1=text.find(term.decode("utf-8").encode(type0))
在輸入到txt的時候相應的分隔符也要decode和encode:
f.write(info+'!'.decode("utf-8").encode(type0))
希望能幫到你。
❼ 用python抓取編碼為gb2312的網頁,結果抓取的都是亂碼 怎樣才能將它弄成正常的HTML格式
你試試下面的代碼
#!/usr/bin/envpython
#-*-coding:utf8-*-
importurllib2
req=urllib2.Request("http://www..com/")
res=urllib2.urlopen(req)
html=res.read()
res.close()
html=unicode(html,"gb2312").encode("utf8")
printhtml
❽ python3怎樣把gb2312的文件轉換成utf-8格式
str.decode("gb2312").encode("utf-8")
decode
是解碼,把一直的gb2312格式轉換為中間格式unicode,encode再轉換為你需要的utf-8
❾ 怎麼在Python里使用UTF-8編碼
概述
在python代碼即.py文件的頭部聲明即可
解析
py文件中的編碼
Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用"編碼指示"來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明:
# -*- coding=utf-8 -*-
#coding=utf-8
# 以上兩種選其一即可
其他的編碼如:gbk、gb2312也可以;否則會出現:
SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
python中的編碼與解碼
先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode,他們都是basestring的派生類;
str類型是一個包含Characters represent (at least) 8-bit bytes的序列;
unicode 的每個 unit 是一個 unicode obj;
在str的文檔中有這樣的一句話:
The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.
也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。
拓展內容
utf-8編碼
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,也是一種前綴碼。它可以用來表示Unicode標准中的任何字元,且其編碼中的第一個位元組仍與ASCII兼容,這使得原來處理ASCII字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他存儲或發送文字的應用中,優先採用的編碼。
UTF-8使用一至六個位元組為每個字元編碼(盡管如此,2003年11月UTF-8被RFC 3629重新規范,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個位元組):
1、128個US-ASCII字元只需一個位元組編碼(Unicode范圍由U+0000至U+007F)。
2、帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要兩個位元組編碼(Unicode范圍由U+0080至U+07FF)。
3、其他基本多文種平面(BMP)中的字元(這包含了大部分常用字,如大部分的漢字)使用三個位元組編碼(Unicode范圍由U+0800至U+FFFF)。
4、其他極少使用的Unicode輔助平面的字元使用四至六位元組編碼(Unicode范圍由U+10000至U+1FFFFF使用四位元組,Unicode范圍由U+200000至U+3FFFFFF使用五位元組,Unicode范圍由U+4000000至U+7FFFFFFF使用六位元組)。
對上述提及的第四種字元而言,UTF-8使用四至六個位元組來編碼似乎太耗費資源了。但UTF-8對所有常用的字元都可以用三個位元組表示,而且它的另一種選擇,UTF-16編碼,對前述的第四種字元同樣需要四個位元組來編碼,所以要決定UTF-8或UTF-16哪種編碼比較有效率,還要視所使用的字元的分布范圍而定。不過,如果使用一些傳統的壓縮系統,比如DEFLATE,則這些不同編碼系統間的的差異就變得微不足道了。若顧及傳統壓縮演算法在壓縮較短文字上的效果不大,可以考慮使用Unicode標准壓縮格式(SCSU)。
互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持UTF-8編碼。互聯網郵件聯盟(IMC)建議所有電子郵件軟體都支持UTF-8編碼。
❿ python爬蟲中,格式為gb2312的HTML在decode('utf-8')時出錯。求解。
#coding=utf-8
import urllib2
url='http://bbs.hupu.com/12321671.html'
html=urllib2.urlopen(url)
content=html.read().decode("gbk").encode("utf-8")
print content
html.close()