在URL,PHP的非拉丁字符(Non latin symbols in url, php)

2019-10-17 10:42发布

如果URL,非允许的字符,例如空间的使用:

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

并点击此链接,浏览器ADDRES酒吧我看见mysite.com/pa%20ge

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

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

在浏览器中ADDRES吧,我看到mysite/აბცდ.php

也就是说,这些非拉丁联盟字母符号,都没有改变,TEY在URL“提出了”为原来的观点。

问题:为什么? 非拉丁联盟字母符号也允许在网址是什么?

Answer 1:

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

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

什么是浏览器显示在地址栏是不同的东西。 现代浏览器尽可能地做到用户友好地和解码一定百分比编码的字符在地址栏中显示为人类可读的文本显示。 对于反欺骗的原因,只有一些被解码,不是全部。 格鲁吉亚恰好是非常安全的,因为它很难误以为是其他任何类似的寻找字符。



Answer 2:

这些字符是内部编码的百分比为好,但在浏览器中显示这些原始格式为尊重用户。 当您复制和粘贴URL,你会看到百分号编码到位:

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

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

见这个答案的背景信息。



文章来源: Non latin symbols in url, php