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

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

生活随笔

當(dāng)前位置: 首頁(yè) >

python3 设置默认编码_Python3的字符编码乱码问题解决思路

發(fā)布時(shí)間:2025/3/21 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 设置默认编码_Python3的字符编码乱码问题解决思路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在亂碼問(wèn)題上,Python3相比Python2已經(jīng)好多了,但在處理外來(lái)字符時(shí)比如文件或者網(wǎng)站時(shí)還是會(huì)出現(xiàn)亂碼問(wèn)題。

亂碼的原因很多,一個(gè)是來(lái)源的字符編碼在接收時(shí)處理不當(dāng),編程語(yǔ)言默認(rèn)的UTF8處理gb2312字符時(shí)沒(méi)聲明encoding,當(dāng)然會(huì)出錯(cuò)。二是在代碼用到的第三方代碼使用了默認(rèn)encoding處理了。三是在控制臺(tái)或者文本編輯器中,這些程序本身也有默認(rèn)的encoding。這三個(gè)環(huán)節(jié)沒(méi)處理好都會(huì)出現(xiàn)亂碼問(wèn)題。

以一個(gè)最常見(jiàn)的爬蟲(chóng)程序?yàn)槔>W(wǎng)站在head里本身雖然聲明了gbk charset,但有可能是錯(cuò)的。 首先我們要確保requests沒(méi)有改變編碼,而用response.content 就可以確保這一點(diǎn),因?yàn)樗亲止?jié)流,也就是requests下載的原生內(nèi)容。然后我們可以調(diào)用charset.detect方法判斷encoding,結(jié)果輸出是gb2312

知道來(lái)源的編碼至關(guān)重要,不然我們就不清楚哪里出了錯(cuò),只能不停試驗(yàn)可以的組合編碼和轉(zhuǎn)換。知道原有的編碼以后,就可以在隨后的每一行代碼里查看encoding是否發(fā)生改變,如果出現(xiàn)亂碼,就可以肯定在這一行指定的encoding有錯(cuò)。

一般來(lái)說(shuō)我們可以print下查看是否有亂碼。但這里有個(gè)巨大的坑,要看你用的操作系統(tǒng),終端程序或者IDE。象windows可能是gb2312或者UTF16, Linux則要設(shè)置Locale系統(tǒng)變量。而且就算你設(shè)置對(duì)了,還要考慮是否當(dāng)前字體是否支持中文,不然也是亂碼。

萬(wàn)能的SO有高人給了一個(gè)方法可以無(wú)視console的encoding, 直接用sys.out.buffer.write() ,但前提是stdout用了正確的編碼匹配你的字符變量的編碼。sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

完整的程序如下,在cmd.exe, pycharm, wsl終端下都可以完美顯示import requests

import sys

import io

import chardet

if __name__ == '__main__':

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

r = requests.get(sys.argv[1], proxies={"http": "http://127.0.0.1:1080"})

# print(chardet.detect(r.content))

rr = r.content.decode('gb18030')

rr = rr.encode('utf-8')

sys.stdout.buffer.write(rr)

總結(jié)

以上是生活随笔為你收集整理的python3 设置默认编码_Python3的字符编码乱码问题解决思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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