如何格式化带有特殊/国际字符的网址?
目前,我尝试将网址“看起来很好”,以便:
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包含太多“不可转换”的字符。
答案 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
你可以看到域中的æ以及页面名称中的ø