小程序端请求参数中含有中文
如果小程序端发起的请求参数中含有中文,直接发送到后台会显示乱码,需要在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 = "/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 = "/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<String> responseBodyConverter() {
return new StringHttpMessageConverter(Charset.forName("UTF-8"));
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(responseBodyConverter());
}
然而并无卵用,到底是怎么回事呢,在小程序端打印一下响应格式看看:
可以看到小程序端已经是application/json;charset=utf-8类型了,居然姓名还是乱码,真是让人抓狂啊!!!
今天突发奇想,是不是后台传输的数据格式本身就不对啊,打印一下看看:文章来源:https://www.toymoban.com/news/detail-488774.html
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,可,能是老版本的原因了,不知新版本有没这个问题,先记录下来。文章来源地址https://www.toymoban.com/news/detail-488774.html
到了这里,关于关于微信小程序与Java后台交互数据中中文乱码问题的讨论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!