我正在创建一个应用程序屏幕,在用户输入(街道,城市)的帮助下刮擦网站。但是,街道或城市可能有'å','ä'和'ö'字符,需要进行编码。
我已经尝试过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
答案 0 :(得分:1)
该网站可能正在使用escape
,它返回一个Unicode代码点。相反,encodeURIComponent
生成UTF-8值。 (向下滚动到http://www.utf8-chartable.de/上的U+00E4
代码点,了解ä
的不同值。)
我通常不鼓励使用escape
函数,因为它没有在任何标准中指定。但是,由于这可能是匹配网站行为的最简单方法(遗憾的是不使用首选encodeURIComponent
),因此它肯定是您的最佳选择。尽管是非标准的,它几乎适用于所有浏览器。