1

如果在 url 中使用,则不允许使用字符,例如空格:

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

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

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

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

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

也就是说,这些非拉丁字母符号没有改变,它们在 url 中“呈现”为原始视图。

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

4

2 回答 2

2

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

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

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

于 2012-11-24T09:53:00.227 回答
1

这些字符也在内部进行了百分比编码,但出于对用户的礼貌,浏览器会以原始格式显示它们。当您复制并粘贴 URL 时,您将看到百分比编码已到位:

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

变成

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

有关背景信息,请参阅此答案

于 2012-11-24T09:52:19.117 回答