【问题标题】:Non latin symbols in url, phpurl,php中的非拉丁符号
【发布时间】:2012-11-12 11:14:37
【问题描述】:

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

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

然后点击这个链接,在浏览器地址栏中我看到mysite.com/pa%20ge

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

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

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

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

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

【问题讨论】:

    标签: php url character latin


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这些字符也在内部进行了百分比编码,但出于对用户的礼貌,浏览器会以原始格式显示它们。当您复制并粘贴 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-10
        • 1970-01-01
        • 2010-10-06
        • 2023-03-22
        • 2011-07-01
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        相关资源
        最近更新 更多