2011-04-14 32 views
2

我嘗試將一些包含變音符號的參數發佈到url(PHP腳本)。所以我必須逃避參數。但是Ruby給我一個意想不到的字符串。Ruby on Rails在url中跳過變音符號

PHP:

urlencode("äöü"); 

輸出:%E4%F6%FC

和回報率:

URI.escape("äöü") 

輸出:%C3%A4%C3%B6%C3%BC

或者:

CGI.escape("äöü") 

輸出:%C3%A4%C3%B6%C3%BC

我正在使用Rails 3.0.5和Ruby 1.9.2,我的應用程序是爲UTF-8設置的。我的錯在哪裏?我該怎麼辦?

感謝名單安迪

回答

2

歡迎來到字符串編碼的美妙世界。如您所述,Ruby被配置爲UTF-8,而您的PHP安裝看起來像試圖使用ISO 8859-1進行編碼。

爲了解決這個問題,您需要確保兩個腳本使用相同的編碼,或者將URL參數從UTF-8顯式轉換爲ISO 8859-1。

+0

非常感謝!預計這樣的事情。現在我正在使用:'CGI.escape(Iconv.conv('ISO-8859-1','utf-8',「äöü」))' – andi 2011-04-14 14:17:05

-1

也許你應該使用這樣的事情:

CGI.escape("äöü") 

如果你有一個錯誤嘗試要求 'CGI'之前。

+0

與URI.escape相同的結果 – andi 2011-04-14 13:24:42

+0

它應該工作很奇怪。即使你有相同的http://railsforphp.com/reference/url/urlencode。對不起,如果我使用鏈接中給出的字符串 – 2011-04-14 13:29:02

+0

,兩者(PHP和RoR)都是一樣的......奇怪的 – andi 2011-04-14 13:32:02