URL中文編碼與文字中文編碼的關係

2021-10-02 08:24:48 字數 1743 閱讀 3391

寫在前面:

系統環境: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...