小程序端请求参数中含有中文 如果小程序端发起的请求参数中含有中文,直接发送到后台会显示乱码,需要在header中设置UTF-8编码
wx.request({
url: app.globalData.server_url + "wxTest",
method: 'post',
header: {
"Content-Type": "application/x-www-form-urlencoded;
charset=utf-8"
},
data: {
srctPhone: srctPhone
},
这样后台接收到的中文就能解析正常了
后台返给小程序的数据中含有中文 为了便于测试,后台接口简化如下:
/**
* 微信解析手机号
* @param srctPhone
* @return
*/
@PostMapping(value = "https://www.it610.com/wxTest")
public Map wxTest(String srctPhone) {
Map map = new HashMap();
map.put("code", 200);
JSONObject obj = new JSONObject();
obj.put("phoneNumber", "13512911111");
// 手机号明文
obj.put("userName", "张三");
// 测试中文
map.put("data", obj);
return map;
}
结果小程序端显示的用户名为“寮犱笁”。
起初怀疑后台返回的编码格式不对,网上说对于Springboot的@RestController注解,可以使用produces强制进行修改返回数据的格式,修改如下:
@PostMapping(value = "https://www.it610.com/wxTest", produces = "application/json;
charset=utf-8")
public Map wxTest(String srctPhone) {
Map map = new HashMap();
map.put("code", 200);
JSONObject obj = new JSONObject();
obj.put("phoneNumber", "13512911111");
// 手机号明文
obj.put("userName", "张三");
// 测试中文
map.put("data", obj);
return map;
}
结果还是不行,另有说需要在WebMvcConfiguration类中进行统一配置:
@Component
public class WebMvcConfiguration implements WebMvcConfigurer {@Bean
public HttpMessageConverter> responseBodyConverter() {
return new StringHttpMessageConverter(Charset.forName("UTF-8"));
}@Override
public void configureMessageConverters(List> converters) {
converters.add(responseBodyConverter());
}
【java|关于微信小程序与Java后台交互数据中中文乱码问题的讨论】然而并无卵用,到底是怎么回事呢,在小程序端打印一下响应格式看看:
文章图片
可以看到小程序端已经是application/json; charset=utf-8类型了,居然姓名还是乱码,真是让人抓狂啊!!!
今天突发奇想,是不是后台传输的数据格式本身就不对啊,打印一下看看:
JSONObject obj = new JSONObject();
obj.put("phoneNumber", "13512911111");
// 手机号明文
obj.put("userName", "张三");
// 测试中文
System.out.println("userName: 张三");
map.put("data", obj);
return map;
打印结果:
文章图片
代码里直接写的“张三”,打印出来居然是:寮犱笁。难度是文件编码不对?
文章图片
可是IDEA显示的是UTF-8啊,难到是工程设置的问题:
文章图片
工程设置也是UTF-8,但是上面有个Participant.java文件设置的是GBK,一个工程里面编码不统一,难道是这个原因引起的?赶紧把上面的GBK设置删除,重新编译运行还是不行啊,重启IDEA试试:
文章图片
终于看到久违的“张三”了!明明设置工程为UTF-8,可居然因为一个文件设置不同导致整个工程以GBK格式编译的,这像是IDEA本身的bug,我用的是IDEA2018.3.5,可,能是老版本的原因了,不知新版本有没这个问题,先记录下来。
推荐阅读
- 笔记|微信小程序(原生)
- 微信小程序|基于uni-app实现微信小程序一键登录和退出登录功能
- PHP毕设含lunwen|含文档+PPT+源码等]精品基于PHP实现的好物优购商城|电商小程序[包运行成功]计算机毕业设计PHP毕业设计项目源码计算机PHP毕业设计微信小程序
- 网易二面(Kafka为什么吞吐量大、速度快(?))
- JEECG低代码平台|JeecgBoot 3.4.0 版本发布,微服务重构版本
- 别再乱打日志了,这份 Java 日志规范,应有尽有,建议收藏!!
- mall学习教程|Mall电商实战项目微服务版本全面升级,支持最新版SpringCloud,权限解决方案升级...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
- QuickFIX|QuickFix Java 讲解(四)服务器的搭建与解析