utf-8在編程和網(wǎng)頁設(shè)計中越來越普遍,統(tǒng)一的漢字編碼方式可以為我們省卻很多麻煩。
因此建議新設(shè)計網(wǎng)頁都采用utf-8的編碼方式。
但是,如果python在win下用cgi方式發(fā)布utf-8頁面,常常會出現(xiàn)奇怪的亂碼問題。
例如
pycharm編輯器截圖
瀏覽器截圖
明明源代碼是utf-8格式的了,傳遞的html也聲明也為utf-8了,瀏覽器也支持utf-8,但是卻顯示亂碼。這是什么原因呢?
其實原因在于圖中第3步"直接用print"輸出。
我們的測試平臺是win,這個平臺的控制臺默認的工作編碼是gbk,
python內(nèi)部編碼是utf-8,現(xiàn)在工作在默認gbk的平臺上,這種情況下print會自動將utf-8轉(zhuǎn)換成gbk編碼以便在平臺上正確顯示。
而我們向瀏覽器輸出網(wǎng)頁內(nèi)容,瀏覽器是能支持utf-8且網(wǎng)頁內(nèi)也指定了utf-8編碼,這種情形下不需要做編碼轉(zhuǎn)換,如果print一廂情愿的將中文轉(zhuǎn)為gbk反而幫了倒忙。
解決的辦法很簡單,就是自己寫一個強制輸出utf-8格式的輸出函數(shù),取代原始的print就可以了
def printu8(*args): f=open(1, 'w', encoding='utf-8', closefd=False) print(*args, file=f) f.flush() f.close()
用自定義的輸出函數(shù)替代原始的print之后的代碼
這樣,瀏覽器就能正確顯示utf-8中文了
解決了中文輸出的問題之后,我們就可以做一個完整的報名網(wǎng)站了,下期貼出全部代碼,感謝繼續(xù)關(guān)注“有只狗狗叫多多”,不要錯過哦。。。
我們抓取數(shù)據(jù)的時候,經(jīng)常用到谷歌瀏覽器開發(fā)者工具,谷歌瀏覽器更新后,新版的谷歌瀏覽器去掉了編碼設(shè)置的功能,出現(xiàn)亂碼時,我們就需要安裝插件來解決。
就是這個插件,大家可以網(wǎng)上搜一下。
安裝的時候可能會遇到,無法安裝的問題,可以嘗試修改文件擴展名為rar,然后解壓縮到文件夾,通過開發(fā)者模式安裝:
選擇解壓好的文件夾,就可以順利安裝了。
使用很簡單,安裝后最好重啟一下瀏覽器,讓插件啟用
通過右鍵或這個插件按鈕來設(shè)置編碼格式,這個網(wǎng)站的編碼格式是utf-8
設(shè)置好之后,在開發(fā)者工具中按CTRL+R,重新加載一下數(shù)據(jù),再來查看:
這個時候我們可以通過直接復制response來實現(xiàn)數(shù)據(jù)抓?。?/p>
這個數(shù)據(jù)可以直接識別為JSON格式,很方便就能找到我們需要的數(shù)據(jù)。