2014-01-14 64 views
2

我有問題與從PayPal的ipn。我向他們發送utf-8編碼的數據(例如「Naročilošt」作爲項目名稱),當有人付費時,他們向我發送格式錯誤的響應:「Naro 〜D 〜Milo〜E'。」即UTF-8編碼),然後當我嘗試驗證付款時,我發現它是無效的。paypal ipn錯誤的編碼問題

我試着改變我的貝寶個人資料上的「購買按鈕」編碼,但它不工作(我仍然得到錯誤編碼字符的迴應)。任何人有一個想法如何解決這個問題?我寧願避免將項目名稱轉換爲純ASCII或類似的東西。

回答

0

解決方案由OP。

根據this

當Servlet容器接收到請求時,它總是將請求傳遞參數到您在ISO-8859-1編碼解碼方案。 (例如,使用UTF-8編碼的瀏覽器,但使用ISO-8859-1解碼容器)。因此,您的servlet或JSP將總是接收ISO-8859-1編碼以外的字符的垃圾。

這樣解決我的問題是獲取請求參數的方式:

String value = request.getParameter("mytext"); 
try{ 
    value = new String(value.getBytes("8859_1"), "UTF-8"); 
}catch(java.io.UnsupportedEncodingException e){ 
    System.err.println(e); 
}