我是靠谱客的博主 威武铅笔,最近开发中收集的这篇文章主要介绍MQTT+STM32+ESP8266-01s硬件传递的JSON数据到前端和后端出现中文乱码问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在做一个关于MQTT相关毕设项目,数据传输过程中出现了中文乱码问题,大致就是硬件发送的JSON主题数据中包含中文(如下图1所示),软件后端和软件前端接受该主题数据后出现了中文乱码,出现乱码一般都是硬件传递到后端和前端的编码不一致导致的,所以前端和后端接受该JSON数据的时候设置一下编码即可,其中后端接收到的中文乱码如下图2,前端接受到的乱码如下图3所示。

  • 硬件发送的JSON主题数据

在这里插入图片描述

  • 后端出现中文乱码
    在这里插入图片描述
  • 前端出现中文乱码

在这里插入图片描述

后端的解决办法就是在MQTT接收方法中设置一下编码格式,如下图所示:

在这里插入图片描述

设置后后端中文乱码问题得到解决,如下图所示:

在这里插入图片描述

前端我是采用的MQTT.js,所以在client.on(“message”, (topic, message, packet) => {} 中设置一下messsage的编码格式,详细步骤如下:

  • 首先,需要在utils文件中创建一个encode.js文件,代码如下:
import {
    TextEncoder,
    TextDecoder
  } from 'text-encoding'
  
  /**
   * 编码
   * @param {*} str 需要编码的字符串
   * @param {*} encoding 编码类型(gb2312,utf-8)
   * @returns unit8Array类型的对象
   */
  export function encode(str, encoding) {
    let encode = new TextEncoder(encoding, {
      NONSTANDARD_allowLegacyEncoding: true
    })
    let uint8Array = encode.encode(str);
    return uint8Array;
  }
  
  
  /**
   * 解码
   * @param {*} uint8Array 需要解码的unit8Array类型的对象
   * @param {*} encoding 解码类型(gb2312,utf-8)
   * @returns 解码出来的字符串
   */
  export function decode(uint8Array, encoding) {
    let decode = new TextDecoder(encoding);
    return decode.decode(uint8Array)
  }

  • 编码格式采用了 text-encoding,所以项目需要导入该包的依赖:
npm install text-encoding --save

备注:本代码来源于这篇博文https://www.jianshu.com/p/24035a14eeb7

  • 项目中导入encode.js文件:

在这里插入图片描述

  • 然后在client.on(“message”, (topic, message, packet) => {} 中设置编码格式,如下图所示:

在这里插入图片描述
前端中文乱码得到解决,如下图所示:

在这里插入图片描述

最后

以上就是威武铅笔为你收集整理的MQTT+STM32+ESP8266-01s硬件传递的JSON数据到前端和后端出现中文乱码问题的全部内容,希望文章能够帮你解决MQTT+STM32+ESP8266-01s硬件传递的JSON数据到前端和后端出现中文乱码问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部