urlencode後的每個%XX代表一個位元組?

WBOY
發布: 2016-08-04 09:19:30
原創
1183 人瀏覽過

中文urlencode後,每個%XX代表一個位元組,是這樣的吧?
所以urlencode('中')的結果是%XX%XX%XX(utf-8編碼)

回覆內容:

中文urlencode後,每個%XX代表一個位元組,是這樣的吧?
所以urlencode('中')的結果是%XX%XX%XX(utf-8編碼)

對的,為了解決unicode的過度佔用記憶體空間和擴展不變的問題,utf-8規範出現了。

  1. 對於單字節的符號,位元組的第一位設為0,後面7位元為這個符號的unicode碼。因此對於英語字母,UTF-8編碼和ASCII碼是相同的。

  2. 對於n位元組的符號(n>1),第一個位元組的前n位元都設為1,第n+1位元設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位位,全部都是這個符號的unicode碼。

也就是說utf-8的編碼結果是變長的。
字的utf-8編碼為E4B8AD,所以對應的urlencode為%E4%B8%AD.

是的,URL編碼純粹是把特殊符號和非ASCII字元的資料用十六進位表示出來,然後每個位元組(也就是兩位十六進制數)前加一個百分號。對於那些不特殊的ASCII字元的URL編碼就是它本身。

同樣一個中字,如果是GBK編碼就是兩個字節,如果是UTF-8就是三個位元組。

當然,比較麻煩的是URL編碼比較混亂。例如有的地方用+來表示空格,有的又是用%20,具體情況還是要具體分析。前者對應的是函數是urlencode,後者對應的是rawurlencode。通常前者用在表單資料中(包括URL中的query也就是?後的部分),後者用在URL路徑中(host後query前的部分)

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板