一. 解决使用milo读取OPC设备字符串类型时,出现中文和特殊符号乱码的情况
- 解决前,读取字符串:你好
2. 解决后,读取字符串:你好
3. 解决前,读取字符串:165℃
-
解决后,读取字符串,165℃
-
解决核心代码
在取到值时转码
// 如果值是字符串 转码 ,不然会出现中文或特殊符号乱码if (value instanceof String) {value = decodeGBK((String) value);}// 解码GBK乱码的方法private String decodeGBK(String value) {try {// 将乱码字符串按ISO-8859-1编码转为字节数组byte[] bytes = value.getBytes(StandardCharsets.ISO_8859_1);// 使用GBK解码return new String(bytes, Charset.forName("GBK"));} catch (Exception e) {return value; // 解码失败时返回原始值}}
二 为什么会在 OPC UA 中出现乱码
OPC UA 协议与编码:OPC UA 协议支持多种数据类型和编码格式,服务器和客户端之间传输的文本数据通常需要进行正确的编码和解码。如果在数据传输时未指定明确的编码方式,或者客户端和服务器之间使用了不同的编码格式,读取时可能就会出现乱码。
设备的默认编码:某些设备(如 PLC 或传感器)可能使用特定的编码格式(如 GBK 或 Windows-1252)。如果 OPC UA 客户端没有正确处理这些编码,读取到的数据就可能是乱码。
所以如果以后其他设备有别的编码方式,可能还需要增加解码逻辑。
持续更新…
end 2024/11/11