小程序端请求参数中含有中文

如果小程序端发起的请求参数中含有中文,直接发送到后台会显示乱码,需要在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 {@Beanpublic HttpMessageConverter<String> responseBodyConverter() {return new StringHttpMessageConverter(Charset.forName("UTF-8"));}@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(responseBodyConverter());}

然而并无卵用,到底是怎么回事呢,在小程序端打印一下响应格式看看:

可以看到小程序端已经是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,可,能是老版本的原因了,不知新版本有没这个问题,先记录下来。

关于微信小程序与Java后台交互数据中中文乱码问题的讨论相关推荐

  1. Java小程序post如何传参,微信小程序向Java后台传输参数的方法实现

    微信小程序向Java后台传输参数的方法实现 首先,微信小程序我使用的是微信web开发者工具 想要向后台传输数据,需要在js中写 在微信小程序的官方文档中可以看到一个api叫wx.request它的作用 ...

  2. 微信小程序与Java后台的通信

    一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的, ...

  3. 《微信小程序》微信小程序用java后台连接数据库进行操作。

    微信小程序与Java后台的通信 一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很 ...

  4. 微信小程序登录Java后台接口

    微信小程序登录java后台接口 首先看一下微信小程序的开发文档: 微信小程序开发文档 步骤: 小程序端向微信接口服务发送请求--wx.login():获取到登录临时凭证code 小程序端拿着获取到的c ...

  5. 微信小程序及Java后台测试登录

    微信小程序及Java后台测试登录 文章目录 微信小程序及Java后台测试登录 一.使用的工具以及开发环境 二.微信端登录代码. 第一种方式,使用wx.getUserInfo直接获取微信头像,昵称. 第 ...

  6. 微信小程序之获取后台动态数据表格布局display:table

    微信小程序之获取后台动态数据表格布局display:table 猿来独往 2018-09-02 本文没有采用flex布局和grid布局来设置表格的,而是通过 display: table;来设置. 一 ...

  7. 微信小程序和Java后台连接,进行数据交互

    小程序端和后台进行连接,并且向后台传递数据,同时接收后台传递回来的数据.基于idea.Java后台. 步骤一:创建一个Spring-boot项目: 步骤二:写Controller(后台,基于SSM): ...

  8. java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)

    首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...

  9. 微信小程序在java后台获取用户unionid等敏感信息

    最近在弄小程序,阅读了微信官方文档,上面说可以在后台获取用户的openid和unionid这些敏感信息,当然网上也有不少帖子,有的是在前台获取的,不过这里不太建议把这些敏感信息放在前台,毕竟不太安全. ...

最新文章

  1. WEB前端--HTML
  2. Java 判断字符串是否为空的四种方法、优缺点与注意事项
  3. c语言设置程序自动执行,c语言如何设置程序进程执行优先权
  4. 河南省第十三届ICPC大学生程序设计竞赛 【部分题题解】
  5. 截取两个标签之间的文本
  6. nginx配置https以及出现的各种问题
  7. 放大镜_指甲钳上有放大镜?再也不怕夹到肉了
  8. bootstrap table 的简单Demo
  9. mysql在jsp的导包语句_JSP+MYSQL中如何正确使用JDBC包?
  10. netperf网卡测速ubuntu linux 环境下测硬件网卡速度
  11. 穿越沙漠问题c语言算法,穿越沙漠问题---递推法
  12. 5种Python深度学习库和资料
  13. ue4 本地化要点详解
  14. qnx 资源管理器一(转载)
  15. Python3.7中,Django配置MySql数据库
  16. js字符转换成分数_js小数转分数-近似递归
  17. H5学习笔记(九)高度塌陷问题
  18. 那些让你起飞的计算机基础知识!
  19. Arduino连接pH计
  20. matlab耀输,基于 Matlab的BP神经网络在太阳耀斑级别预测中的应用

热门文章

  1. python之json.loads()报错ValueError: No JSON object could be decoded解决
  2. switch基本用法
  3. 如何搬运短视频,从快手搬运视频图文教程攻略
  4. windows无法打开“应用商店”
  5. 用数据分析验证,王者荣耀完胜阴阳师,小学生才是最终的赢家
  6. 如何利用eclipse把 class文件打包成java文件
  7. AndroidStudio模拟器全面屏皮肤
  8. matlab 差分方程的解(解答qq网友)
  9. 盘点8个国内外知名表单软件平台,你知道几个?
  10. 数据库查询近一年来的数据(近三个月、近六个月同理)