日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python3 gb2312转utf8_字符编码和python使用encode,decode转换utf-8, gbk, gb2312

發(fā)布時(shí)間:2025/3/20 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 gb2312转utf8_字符编码和python使用encode,decode转换utf-8, gbk, gb2312 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python3 爬取網(wǎng)頁(yè)報(bào)錯(cuò):'gb2312' codec can't decode byte 0xb5 in position 154969: illegal multibyte sequence

方法一:

我一開(kāi)始的想法是獲取網(wǎng)頁(yè)的head標(biāo)簽內(nèi)的meta標(biāo)簽中的charset對(duì)應(yīng)的值。不過(guò)并不是所有的網(wǎng)頁(yè)都存在這個(gè)屬性,因此這個(gè)想法行不通。

方法二:

response內(nèi)有一個(gè)屬性:response.apparent_encoding,可以通過(guò)獲取該屬性獲取requests所認(rèn)為的編碼,然后主動(dòng)對(duì)response.content進(jìn)行解碼,代碼如下:

encoding = response.apparent_encoding

html = response.content.decode(encoding)

又是解碼錯(cuò)誤。在網(wǎng)上翻了翻別人的帖子,其中的一個(gè)解決方法是在decode函數(shù)后加上"ignore"來(lái)忽略那些無(wú)法解碼的文字。

代碼更改如下:

encoding = response.apparent_encoding

html = response.content.decode(encoding, "ignore")

好了,程序不會(huì)報(bào)錯(cuò)了。

雖然解決了一個(gè)問(wèn)題,但是又出現(xiàn)了一個(gè)新的問(wèn)題,那就是對(duì)于生僻字會(huì)發(fā)生亂碼情況,比如“俤”這個(gè)字,在程序中變?yōu)榱薲。。。

究其原因應(yīng)該是gb2312編碼只是包含了常用的中文文字,所以在遇到生僻字會(huì)發(fā)生編碼錯(cuò)誤,那么哪個(gè)編碼是gb2312的超集呢,在網(wǎng)上百度了下為gb18030,那么直接把上面的代碼encoding改為"gb18030"。

gb18030:是新出的國(guó)家標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)由國(guó)家強(qiáng)制執(zhí)行(也是為了保證中國(guó)信息業(yè)的地位,以及爭(zhēng)取一定的主動(dòng)權(quán)),所以所有在中國(guó)大陸銷售的操作系統(tǒng)必須支持gb18030。現(xiàn)在的Gb18030不僅包含了簡(jiǎn)體和繁體漢字,支持中國(guó)少數(shù)名族文字,還包含了日韓等國(guó)的象形文字。優(yōu)點(diǎn):兼容性好,與以前的國(guó)標(biāo)碼都兼容。缺點(diǎn):對(duì)英文字母需要2個(gè)字節(jié)的編碼(引用自百度百科)

總結(jié)

以上是生活随笔為你收集整理的python3 gb2312转utf8_字符编码和python使用encode,decode转换utf-8, gbk, gb2312的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。