代码之家  ›  专栏  ›  技术社区  ›  Pekka

URL中的Unicode字符

  •  129
  • Pekka  · 技术社区  · 16 年前

    在2010年,您会在一个大型门户网站中提供包含UTF-8字符的url吗?

    here ). 它们必须进行百分比编码才能符合标准。

    不过,我的主要观点是,服务于未编码字符的唯一目的是拥有好看的URL,因此百分比编码已经过时了。

    • 网址得到复制+粘贴到文本文件,电子邮件,甚至是不同编码的网站
    • HTTP客户端库

    我的印象是正确的,麻烦是预期在这里,因此这不是一个实际的解决方案(尚未)如果你是一个非技术性的观众和重要的是,你所有的链接正常工作,即使引用和传递?

    有什么神奇的方法可以在HTML中提供好看的url吗

    http://www.example.com/düsseldorf?neighbourhood=Lörick
    

    可以复制+粘贴的特殊字符完好无损,但在旧客户端中重新使用时工作正常?

    7 回复  |  直到 9 年前
        1
  •  132
  •   Tgr    16 年前

    使用百分比编码。现代浏览器将负责显示;粘贴问题并使其可读。E。g。 http://ko.wikipedia.org/wiki/위키백과:대문

    编辑:

        2
  •  91
  •   bobince    16 年前

    Tgr说了什么。背景:

    http://www.example.com/düsseldorf?neighbourhood=Lörick
    

    那不是URI。但是它 是 IRI

    不能在HTML4文档中包含IRI;属性的类型,如 href 定义为URI而不是IRI。一些浏览器无论如何都会处理IRI,但这并不是一个好主意。

    要将IRI编码为URI,请获取路径和查询部分,UTF-8-对它们进行编码,然后对非ASCII字节进行百分比编码:

    http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick
    

    如果IRI的主机名部分中有非ASCII字符,例如。 http://例え.テスト/ ,使用 Punycode 相反。

    现在你有了一个URI。这是一个丑陋的URI。但大多数浏览器都会为您隐藏这一点:复制并粘贴到地址栏中,或者在链接中跟随它,您将看到它以原始Unicode字符显示。维基百科已经使用了很多年,例如:

    http://en.wikipedia.org/wiki/ɸ
    

    ……嗯,你知道的。

        3
  •  17
  •   Michael    11 年前

    根据您的URL方案,您可以使UTF-8编码部分“不重要”。例如,如果查看堆栈溢出URL,它们的形式如下:

    http://stackoverflow.com/questions/2742852/unicode-characters-in-urls

    http://stackoverflow.com/questions/2742852/これは、これを日本語のテキストです

    因此,如果你有这样的布局,那么你可以在标识符后面的部分使用UTF-8,如果它被乱码了也没关系。当然,这可能只适用于一些特殊的情况。。。

        4
  •  7
  •   Ciro Santilli OurBigBook.com    6 年前

    不确定这是不是一个好主意,但正如在其他评论中提到的和我解释的那样,许多Unicode字符 在HTML5 URL中有效 .

    href 医生说 http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :

    和area元素的href属性的值必须是可能被空格包围的有效URL。

    “有效URL”的定义指向 http://url.spec.whatwg.org/ URL代码点 作为:

    术语“URL代码点”随后用于解析算法的一些部分,例如用于 相对路径状态 :

    还有验证器 http://validator.w3.org/ "你好" ,并且不传递带有空格等字符的URL "a b"

    Which characters make a URL invalid?

        5
  •  6
  •   Cornelius    12 年前

    由于所有这些评论都是正确的,您应该注意到 ICANN 所有浏览器制造公司(微软、Mozilla、苹果等)都必须在URL中支持Unicode,而不需要任何编码,而且这些URL应该可以被Google等搜索到。

    所以这个问题会尽快解决。

        6
  •  1
  •   Peter Manoukian    12 年前

    对我来说,这是正确的方法,这只是工作:

        $linker = rawurldecode("$link");
        <a href="<?php echo $link;?>"   target="_blank"><?php echo $linker ;?></a>
    

    这起到了作用,现在链接已正确显示:

    http://newspaper.annahar.com/article/121638 -±---±¨--§±-§-±¨-§-§-¨--±-§§±§

    在以下位置找到链接:

    http://www.galeriejaninerubeiz.com/newsite/news

        7
  •  0
  •   EKons    10 年前

    . 例如,一些(主要是旧的)运行WindowsXP的计算机不支持Unicode,而是支持ISO编码。这就是为什么百分比编码的网址被发明。此外,如果您将打印在纸上的URL提供给用户,其中包含不容易键入的字符,则该用户可能很难键入该URL(或者干脆忽略它)。百分比编码的形式甚至可以用在许多有史以来最古老的机器上(尽管它们当然不支持互联网)。

    不过,也有一个缺点,即百分比编码字符比原始字符长,因此可能会导致URL非常长。但是试着忽略它,或者使用一个网址缩写器(我推荐) goo.gl 在本例中,将生成一个13个字符长的URL)。另外,如果你不想注册一个谷歌账户,试试看 bit.ly (bit.ly生成略长的URL,长度为14个字符)。

    推荐文章