在URL中的非拉丁符号,php

时间:2012-11-24 09:47:55

标签: php url character latin

如果在url中使用,则为非允许字符,例如space:

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

并点击此链接,在浏览器地址栏中看到mysite.com/pa%20ge

好的,如果现在我使用格鲁吉亚语,(或者例如俄语)字母符号:

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

在浏览器地址栏中,我看到mysite/აბცდ.php

即,这些非拉丁字母符号不会更改,tey在url中“呈现”为原始视图。

问题:为什么? url中是否也允许使用非拉丁字母符号?

2 个答案:

答案 0 :(得分:2)

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

浏览器正在将“აბცდ”转换为发送到服务器的实际 URL的百分比编码实体。实际上,应该将它作为百分比编码字符串嵌入到文档中,浏览器只是为你覆盖了这个错误。

浏览器在地址栏中显示的内容有所不同。现代浏览器尝试尽可能地用户友好并解码一些百分比编码字符以在地址栏中显示为人类可读文本。出于反欺骗的原因,只有某些被解码,而不是全部。格鲁吉亚语恰好相当安全,因为很难将其误认为任何其他类似的角色。

答案 1 :(得分:1)

这些字符在内部也是编码百分比,但浏览器会以原始格式显示它们,这是对用户的礼貌。当你复制&amp;粘贴网址后,您会看到编码百分比已经到位:

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

变为

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

有关背景信息,请参阅this answer