2014-01-14 3 views
2

У меня проблема с ipn от paypal. Я отправляю им данные utf-8 (например, «Naročilo št» в качестве названия элемента), и когда кто-то платит, они посылают мне ответ, который искажен: «Naro ~ D ~ Milo ~ E¡t.» (Ответные претензии который кодируется UTF-8), а затем, когда я пытаюсь проверить этот платеж, я понимаю, что он недействителен.paypal ipn неправильная проблема кодирования

Я попытался изменить кодировку «купить кнопку» в моем профиле PayPal, но он не работает (я все еще получаю ответ с неправильно закодированными символами). У кого-нибудь есть идея, как исправить эту проблему? И я предпочел бы избежать преобразования имен элементов в обычный ascii или что-то подобное.

ответ

0

Решение по OP.

Согласно this

Когда контейнер сервлета получает запрос, он всегда передавать параметры запроса в программу декодированного в ISO-8859-1 кодирования. (например, браузер, закодированный в UTF-8, но контейнер декодируется в ISO-8859-1.) Таким образом, ваш сервлет или 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); 
}