MQTTX里发送主题时,我用HEX然后在主题消息框输入AA,点击Plaintext后就变成了�,请问这是怎么转变的


1fc4bccc46b2db1112d94b8b2fa704e

请问HEX到Plaintext之间是怎样转化的?

你可以看一下这篇文章了解一下字符编码, 字符编码笔记:ASCII,Unicode 和 UTF-8

MQTT X 这里采用的是 UTF-8 编码。

你可以用这个工具自己编解码试试:Hex 编码/解码

@t1ger 这个问题其实没解决啊,官方误解了问题的意思。

在Hex编码的字符串转换为UTF-8编码的String时,有些编码是无法转换的,比如"9108"(0x91 0x08),此时就会用�代替这一段内容,就算转换回Hex编码的字节数组,实际意义也丢失了。

我现在遇到了这个问题,使用“有人DTU”的设备读取电表数据,使用规则引擎抓取,可是读数无法还原,因为原文被规则引擎转换为一个含有�的字符串。

一个实际的例子:DTU设备发送下面hex编码信息,被转换为字符串后无法再转换回去

6870 2842 1002 0068 9108 3333 3333 99a8 7733 0c16

1 个赞

这个hex进制字符串转化丢失字符的问题有没有办法解决,我也遇到了这个问题。有人DTU,http服务接收信息转码存在EF BF BD等字符。

1 个赞

请问问题解决了吗,我也遇到解析有人dtu 的问题了,用 客户端解析正常,但用http服务解析就有问题。看来是utf编码的问题

大家都解决了吗?我也遇到这个问题了。求解决

规则引擎中使用 bin2hexstr 等 hex 字符串相关函数对 payload(二进制) 进行解析,可转为 utf8 编码的字符串