2012-12-28 70 views
1

我正在創建一個應用程序,該屏幕在用戶輸入(街道,城市)的幫助下刮擦了一個網站。然而,街道或城市可以具有需要編碼的字符'ä','ä'和'ö'。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 
+2

也許使用'escape'而不是'encodeURIComponent'。前者給出「來自現場」的結果。 – pimvdb

+0

'encodeURIComponent'生成UTF-8值;您使用的網站使用Unicode代碼點,該代碼點使用'escape'生成。有關'ä'的示例,請參見http://www.utf8-chartable.de/上的代碼點'U + 00E4'。 – apsillers

回答

1

該網站可能使用escape,它返回一個Unicode代碼點。相反,encodeURIComponent生成一個UTF-8值。 (向下滾動到U+00E4代碼點上http://www.utf8-chartable.de/用於ä的不同的值。)

我一般會阻礙使用escape功能的,因爲它不以任何一種標準的規定。但是,因爲這可能是最容易匹配網站行爲的方式(可惜不使用首選的encodeURIComponent),所以這對您來說無疑是最好的選擇。儘管非標準,它應該在幾乎所有的瀏覽器中工作。

+0

非常感謝! :-) – holyredbeard