2012-11-24 115 views
1

如果URL中,非允許的字符使用,例如空間:非拉丁字符,PHP

<a href="pa ge.php">link</a> 

,並點擊此鏈接,在瀏覽器ADDRES酒吧我看見mysite.com/pa%20ge

還好,如果現在我使用格魯吉亞語,(或例如俄語)字母符號:

<a href="აბცდ.php">link</a> 

在瀏覽器ADDRES酒吧,我看到mysite/აბცდ.php

也就是說,這些非拉丁字母符號,沒有改變,tey在URL中呈現爲原始視圖。

問題:爲什麼?非網址字母符號也可以在網址中使用?

回答

2

不,URL只能包含(的一個子集)ASCII。

瀏覽器正在將「აბცდ」轉換爲發送到服務器的實際 URL的百分比編碼實體。事實上,應該將其作爲百分比編碼字符串嵌入到文檔中,以便開始時,瀏覽器只是爲您覆蓋該錯誤。

瀏覽器在地址欄中顯示的內容有些不同。現代瀏覽器儘可能地方便用戶,並解碼一些百分比編碼字符,以便在地址欄中顯示爲可讀的文本。由於反欺騙的原因,只有一些被解碼,並非全部。格魯吉亞人相當安全,因爲很難將其誤認爲其他任何類似的角色。

1

這些字符在內部也進行百分比編碼,但瀏覽器會以原始格式顯示它們,作爲對用戶的禮貌。當您複製&粘貼URL,你會看到百分號編碼到位:

http://domain.com/mysite.აბცდ.php 

成爲

http://domain.com/mysite.%E1%83%90%E1%83%91%E1%83%AA%E1%83%93.php 

背景信息,請參閱this answer