encodeURIComponent没有给我所需的输出

时间:2012-12-28 15:20:33

标签: jquery url encoding urlencode encodeuricomponent

我正在创建一个应用程序屏幕,在用户输入(街道,城市)的帮助下刮擦网站。但是,街道或城市可能有'å','ä'和'ö'字符,需要进行编码。

我已经尝试过encodeURIComponent,但是当它直接在页面上的表格中输入街道和城市时,它不会输出与我即将刮去的网站相同(见下文)。我可以使用/做什么来获得所需的输出?

var url = 'http://www.foosite.com/result.jspv?street=' +
encodeURIComponent(street) + '&city=' + encodeURIComponent(city);

From my app:   http://www.foosite.com/result.jspv?street=Vaktarev%C3%A4gen&city=M%C3%B6nster%C3%A5s
From the site: http://www.foosite.com/result.jspv?street=Vaktarev%E4gen&city=M%F6nster%E5s

1 个答案:

答案 0 :(得分:1)

该网站可能正在使用escape,它返回一个Unicode代码点。相反,encodeURIComponent生成UTF-8值。 (向下滚动到http://www.utf8-chartable.de/上的U+00E4代码点,了解ä的不同值。)

我通常不鼓励使用escape函数,因为它没有在任何标准中指定。但是,由于这可能是匹配网站行为的最简单方法(遗憾的是不使用首选encodeURIComponent),因此它肯定是您的最佳选择。尽管是非标准的,它几乎适用于所有浏览器。