支付宝即时到账接口中文乱码问题
遇见乱码的情况一般都是粗心大意造成的,就像我今天对接支付宝支付接口碰到的中文商品名称在支付宝收银台乱码了,找了半天问题原来是控制层没有设置响应编码造成的。
//设置返回字符编码,设置返回内容类型防止中文乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
这两句代码在向客户端响应之前执行才会有效果。
第一句代码是设置字符集的编码utf-8,如果第二句代码的编码设置不同,则第一句代码设置的编码将覆盖第二句设置的编码。
第二句代码是告诉浏览器我响应的内容是"text/html"类型,字符集编码为"utf-8",你可以通过浏览器自带的调试工具查看响应头信息,它会显示在响应头信息中。
如果第二句代码可以解决掉问题,第一句代码我感觉没有必要留着,它只是设置响应字符集编码,第二句已经包含了字符集编码,并且第一句代码只是设置字符集编码并没有什么效果,因为它不会向客户端通知响应的编码信息。
如果上面说的不对,请告知,因为本人对javaweb知识了解并不深。
如果乱码还无法解决,请检查编码是否统一(比如:存的是utf-8编码字符串,取也要按utf-8编码来取)