2010-09-14 115 views
3

我正在使用浏览器插件,它将当前页面或任何选定链接的URL作为参数,并将其发送到我们的服务器。 当网址中存在基本拉丁字母的字符时(如http://en.wikipedia.org/wiki/Vehicle),插件工作正常。但是,如果URL包含其他字母表中的字符(例如http://ru.wikipedia.org/wiki/Коляска),则该插件不起作用,但我确实使用了encodeURIComponent方法,但这似乎无法解决问题。任何想法?如何正确编码JavaScript中的URL?

谢谢,

奥利维尔。

+2

http://ru.wikipedia.org/wiki/Коляска并不是一个真正有效的URL。当你把它输入到一个现代浏览器时,它会自动对这些字符进行编码。你能否更详细地解释你在做什么,数据来自哪里以及'encodeURIComponent'做了哪些不适合的事情?另外,“浏览器插件”究竟是什么意思? – 2010-09-14 19:20:17

+1

背景:http://stackoverflow.com/questions/2742852/unicode-characters-in-urls – 2010-09-14 19:21:23

回答

1

如果您尝试使用非ASCII字符的完整URI并将其转换为其编码形式,则可能需要使用encodeURI/decodeURI。这些保留了特殊的URI字符,如:/,而不是转义它们;它只能转义在URI中无效的非ASCII字符和字符。因此,它们与在地址栏中输入内容或将URI放入<a href="...">(尽管浏览器之间的行为可能有所不同,但并不完全相同)基本相同。

encodeURIComponent仅用于对URI中的单个组件进行编码,替换URI中有意义的特殊字符,以便您可以将该组件用作查询参数或更长URI中的路径组件。