URL重写 - 国际字母

时间:2008-10-16 16:30:25

标签: url url-rewriting character-encoding

如何格式化带有特殊/国际字符的网址?

目前,我尝试将网址“看起来很好”,以便:

www.myhost.com/this is a test, do you know how?

转换为:

www.myhost.com/this_is_a_test_do_you_know_how

我知道可以转换一些国际字母(ü= ue,æ= ae,å= aa),可以删除一些字符。我一般我试图使URL看起来“好”,但这是愚蠢的?

但是我如何处理与我们的西方ASCII格式无关的中文,日文,阿拉伯字母?

我真的不喜欢用十六进制代码重写URL的想法,所以现在我只使用我的内部唯一ID,如果url包含太多“不可转换”的字符。

4 个答案:

答案 0 :(得分:1)

您使用的是哪种语言? PHP包含一个函数filter_var(),它似乎可以完成你想要的大部分工作。请参阅http://us.php.net/manual/en/function.filter-var.php

通常,从任意字符串输入制作人类可读的ASCII字符串的成本可能太高而不值得。如果用户给你一个中国汉字,你打算做什么?在字典中查找并输出结果拼音?

最好的,最通用的解决方案是简单地获取输入,将其格式化为UTF-8,然后对结果进行url编码。这将使非拉丁文本无法读取,但无论如何都没有针对这些语言的良好,通用的解决方案。您使用的语言几乎肯定具有可以轻松实现这一功能的库函数。

答案 1 :(得分:0)

但Google不利用这个网址吗?如果给定文章中的某些文字在URL中,Google搜索引擎会使用该文章吗?但是,如果真的没有很酷的方式来处理非ascii字母,那么这些语言在“google-internet”上的优先级较低。

答案 2 :(得分:0)

看看,http://ja.wikipedia.org/。如果将鼠标悬停在链接上,它们会在状态栏中显示为日语字符。当您按照链接时,在位置栏中看起来不那么日语,但这可能无法帮助。没有检查过,但我认为它都是utf8十六进制编码。

答案 3 :(得分:0)

如果您使用.NET而不是

Server.URLEncode( myURL );

但是如果你想使用斯堪的纳维亚字符或你想要的任何字符,你只需要在你的URL ReWriting组件中设置规则,因为DynamicWeb CMS软件使用所有可用的字符,只用下划线替换空格( '_')

喜欢这个网址:

http://www.gynækologen.dk/Undersøgelser_og_behandlinger.aspx

你可以看到域中的æ以及页面名称中的ø