小程序请求java服务器数据出现中文乱码问题如何解决
项目背景
某java项目已上线运行两年,支持PC端浏览器、安卓两类客户端登录使用,现须增加微信小程序作为第三类客户端以便使用。
问题描述
服务器返回数据的编码格式为GBK,微信小程序默认按照UTF-8来解析,但是微信开发者工具在测试时并无异常,然而使用真机调试时出现了中文乱码问题,安卓端可以使用sdk解决编码转换的问题,但是小程序没有现成的转换工具,网上也没有好用的方法,本人提供一种相对高效、低耦合的思路供大家讨论。
解决步骤
如何针对小程序解决中文乱码问题,而不影响现有其他客户端。
小程序请求添加参数
在小程序请求的数据中添加 客户端是否为微信小程序
的判别参数。
假设 terminal
为该参数
wx.request({
url: url,
method: "POST",
data: {
terminal: "wx", //标识终端为:微信小程序
},
........
服务器依据此参数判断后 设置编码 再行响应
服务器在响应请求的方法中加入少量简单代码便可实现判断功能,且不影响其他客户端的编码形式。以下代码,response
为HttpServletResponse
对象
//取得小程序标识参数
String terminal = XXXXXXXXXXXXXXXXXXXX(获取小程序标识参数);
//如果是小程序,设置UTF-8后再响应
if ("wx".equals()) {
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
}
问题解决: