我有来自paypal的ipn问题。我发送他们的数据utf-8编码(例如“Naročilošt”作为项目名称),当有人支付时,他们发给我的反应是错误的:“Naro ~D ~Milo ~E¡t。”(回复声称这是UTF-8编码的)然后当我尝试验证付款时我得到它是无效的。
我试图在我的paypal配置文件中更改“购买按钮”编码,但它不起作用(我仍然得到错误编码字符的响应)。有人知道如何解决这个问题吗?我宁愿避免将项目名称转换为简单的ascii或类似的东西。
答案 0 :(得分: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);
}