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

这篇具有很好参考价值的文章主要介绍了关于微信小程序与Java后台交互数据中中文乱码问题的讨论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

如果小程序端发起的请求参数中含有中文,直接发送到后台会显示乱码,需要在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());
    }

然而并无卵用,到底是怎么回事呢,在小程序端打印一下响应格式看看:
关于微信小程序与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;

打印结果:
关于微信小程序与Java后台交互数据中中文乱码问题的讨论
代码里直接写的“张三”,打印出来居然是:寮犱笁。难度是文件编码不对?
关于微信小程序与Java后台交互数据中中文乱码问题的讨论
可是IDEA显示的是UTF-8啊,难到是工程设置的问题:
关于微信小程序与Java后台交互数据中中文乱码问题的讨论
工程设置也是UTF-8,但是上面有个Participant.java文件设置的是GBK,一个工程里面编码不统一,难道是这个原因引起的?赶紧把上面的GBK设置删除,重新编译运行还是不行啊,重启IDEA试试:
关于微信小程序与Java后台交互数据中中文乱码问题的讨论
终于看到久违的“张三”了!明明设置工程为UTF-8,可居然因为一个文件设置不同导致整个工程以GBK格式编译的,这像是IDEA本身的bug,我用的是IDEA2018.3.5,可,能是老版本的原因了,不知新版本有没这个问题,先记录下来。文章来源地址https://www.toymoban.com/news/detail-488774.html

到了这里,关于关于微信小程序与Java后台交互数据中中文乱码问题的讨论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序——后台交互

    目录 后台准备 pom.xml 配置数据源 整合mtbatis 前后端交互  method1  method2 生成mapper接口、model实体类以及mapper映射文件 启动类 然后启动后台即可 首先在index.js中编写以下方法 然后在该页面下方生命周期函数——监听页面加载代码块下编写以下方法 由于后台是没有数据图片的,

    2024年02月06日
    浏览(37)
  • 微信小程序之后台首页交互

    目录 一.与后台数据进行交互request封装 后台准备 测试结果 ​编辑   前端  测试结果  二.wxs的介绍以及入门  测试结果 后台准备 pom.xml文件编写 建立数据表 建立数据请求地址类  定义接口类  测试结果    前端 先关闭mock    先编写url地址  编写utils.js 编写index.js   编写

    2024年02月08日
    浏览(38)
  • 微信小程序进阶——后台交互个人中心授权登录

    目录 一、小程序登录微信登录接口演示 1.1 项目导入 1.2 method1  1.3 method2 二、小程序授权登录 2.1 登录过程 2.1.1 详解 2.1.2 图解 2.2 后端代码导入 2.3 前端代码导入 ​编辑 2.4 案例演示 前端代码如下: 2.4.1 前端调用接口地址 2.4.2 个人中心 后端代码如下: 2.5 效果演示    然后

    2024年02月02日
    浏览(31)
  • 微信小程序之会议OA首页后台交互

    springboot+mybatis appliation.yml 生成mapper接口,model实体类,mapper映射文件 application.yml 在启动类 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象

    2024年02月20日
    浏览(30)
  • 微信小程序之会议OA个人中心后台交互

    目录 获取用户昵称头像和昵称 小程序登录 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小程序 login.js user.js util.js emoji wx.getUserProfi

    2024年02月22日
    浏览(40)
  • 微信小程序之首页-后台交互及WXS的使用

    目录 前言  一. 前后台数据交互及封装request 1.准备后台 1.1 配置数据源  1.2 部分后台获取数据方法编写 2.准备前端 2.1封装Request 2.2 前端JS方法编写 2.3 前端页面展示index.wxml 二.WXS的使用 1.简介 2.WXS优化OA系统  2.1 使用及定义 2.2 导入要使用的项目 2.3 优化会议状态 2.4 优化人

    2024年02月08日
    浏览(41)
  • 关于微信小程序后台报错处理方式

    位置 “微信小程序” == “实验工具” ==“性能质量” == “js分析” 首先找到一个错误信息,找到\\\"https://usr//app-service.js\\\" 的第一行,后面的行号需要复制下来。 2. 然后下载对应版本的 Source Map 文件 解压保存 3. 打开微信开发者工具(提前进入设置== 扩展设置 == 调试器插件 =

    2024年02月11日
    浏览(73)
  • 【Java】微信小程序V3支付(后台)

    目录         相关官网文档         1.需要的参数         2.引入库         3.用到的工具类         4.支付下单实现         5.支付回调 接入前准备-小程序支付 | 微信支付商户平台文档中心 微信支付-JSAPI下单 获取平台证书列表-文档中心-微信支付商户平

    2024年02月12日
    浏览(38)
  • 微信小程序订阅消息推送(附带后台java代码)

    官方文档: 小程序前端:点击进入 小程序服务端:点击进入 一,代码实现(后端) ①定义实体类 ②定义HttpUtil类(Get请求) ③验证token过期时间 ④小程序发送消息 AuthUtil工具类

    2024年02月14日
    浏览(34)
  • 微信小程序——获取用户手机号(Java后台)

    最后有完整代码 1、获取code 2、利用code获取sessionkey 小程序端: Java后台: 获取小程序密钥:微信公众平台-开发管理-开发设置 3、获取iv和encryptedData并解密获取手机号 java后台: 如果报错40029则可能是appid不对 4、完整代码 wxml: wxss: js: Java后台

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包