寫在前面:
系統環境:windows 10
軟體環境:360急速瀏覽器11.0,核心版本69(基於chromium)
在使用爬蟲過程中,我們常常要對url位址進行處理:在發包時對字串進行編碼;在接收資料時,對引數進行解碼。由於現在常見的瀏覽器已經都對url中的字元進行了解碼,因此在使用瀏覽器時,位址列中已經做到了正常中文字元
通過瀏覽器的除錯工具,能夠檢視到在網路上編碼傳輸的位址
由此可以發現:
中文字元
編碼字元
除%e9%99%a4
夕%e5%a4%95
正常顯示的中文字元,編碼後轉換為一串由%+字母/數字的字串,在這個字串中的百分號(%)是瀏覽器作為字元邊界的乙個標誌,字元/數字的組合是utf-8格式下的漢字對應的編碼。
在查詢對應碼表之前,需要先明確一下,unicode與utf-8這個兩個常見名詞的關係。
utf-8轉換表
字元utf-8編碼10進製
utf-8編碼16進製制
unicode編碼10進製
unicode編碼16進製制
除15309220
e9 99 a4
38500
9664
夕15049877
e5 a4 95
22805
5915
轉換規則
接下來,**一下帶入的方式,首先由unicode編碼16進製表示得出unicode編碼二進位制表示
unicode編碼16進製制
unicode編碼2進製
9664
1001 0110 0110 0100
5915
0101 1001 0001 0101
結合關係表查詢到對應行:
將unicode編碼二進位制表示帶入可得:
最終,在url中顯示的編碼
字元編碼
除%e9%99%a4
夕%e5%a4%95
寫在最後
在python中處理url時,常呼叫urllib庫的unquote類處理含有中文url時,匹配中文字串常常就會遇到處理編碼的問題,此處也是在解碼和使用正規表示式進行文字過濾時發現的問題,解決url中中文文字篩選的問題可以嘗試一下思路:
通過這樣的方式,將原有的由百分號(%)作為分隔符作為邊界標誌的特殊字元,轉換成一般的文字字元utf-8,即\u***x格式,便能夠很容易找到對應的正規表示式將其中中文字元找到。
補充:url編碼遵循下列規則: 每對name/value由&;符分開;每對來自表單的name/value由=符分開。如果使用者沒有輸入值給這個name,那麼這個name還是出現,只是無值。任何特殊的字元(就是那些不是簡單的七位ascii,如漢字)將以百分符%用十六進製制編碼,當然也包括象 =,&;,和 % 這些特殊的字元。其實url編碼就是乙個字元ascii碼的十六進製制。不過稍微有些變動,需要在前面加上「%」。比如「\」,它的ascii碼是92,92的十六進製制是5c,所以「\」的url編碼就是%5c。
url中文編碼問題
1.url該編碼的編碼一定要編碼,否則如果存在空格就會報400錯誤,那麼什麼樣的url是該編碼的呢?url中有空格等特殊字元的 url中有中文的2.編碼要只對引數編碼,不要對整個url進行編碼,因為如果對整個url編碼的話會把url中的 等字元也進行編碼了 3.使用urlencoder.encode...
包含中文字元的URL編碼問題
在xml應用中,經常將一些 url資訊作為xml資料儲存,其中 url引數有可能包含有中文字元。當使用dom對xml資料進行解析時,可以對中文字元進行編碼。但如果只使用xslt來顯示xml資料時 data.xml data.xsl 發現此時的 url會出現編碼錯誤.即使指定編碼型別 encoding...
URL中文和編碼問題
中文問題 採用struts框架,直接提交form時 比如,form.submit 不會有中文的問題。而如果採用拼接url的方式提交,並且jsp頁面的編碼為非中文方式 比如,utf 8等 則會有中文亂碼的問題,此時需要在服務端對中文進行解析,最簡單的語句new string string source...