[代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
来源:互联网 发布:qt网络编程视频教程 编辑:程序博客网 时间:2024/06/05 02:54
最近在做一个流水线的接口,连接的是日立生化和雅培化学发光。流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息。
之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支持网口,并且通讯协议是HL7,之前因为没有强制要求发送或者解析带有中文信息的数据,所以一直都是用ASCII编码,关于乱码的问题也没有处理。
而这一次仪器厂家需要病人的信息,而这些内容大都是中文,尝试用他们的软件发送了一段测试信息,在网口测试工具显示是中文无乱码,所以肯定是解码存在问题,就此取的该数据的二进制数据,尝试进行解析。
误区
通讯文档中有一个节点,说明编码是UTF-8,然而通过HexToString方法指定了几种常见的编码,包括UTF-8时,均无效果。
解决
感觉自己已经用穷举法试遍了所有的编码,为什么仍然不行呢。然后就去网上搜常见的编码格式,一个“Default”引起了我的注意,然后……就是他了。
_(:з」∠)_
回顾了一下,一个小小的编码格式也折磨了半天,不过终于解决了很久以来的一个困惑。不过我和信息科科长说这个事情的时候,他突然问了一句,那以后我装系统是不是只能装简体中文……
关于16进制转字符串,可以参考我之前的文章,不过在网上搜相关资料的时候,发现了一段代码挺简洁的,出处的话我忘记了,好像说是微软提供的:
public static string HexToStr(string mHex) // 返回十六进制代表的字符串 { mHex = mHex.Replace(" ", ""); if (mHex.Length <= 0) return ""; byte[] vBytes = new byte[mHex.Length / 2]; for (int i = 0; i < mHex.Length; i += 2) if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2])) vBytes[i / 2] = 0; return Encoding.Default.GetString(vBytes); }
阅读全文
0 0
- [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
- md5 tcp/ip通讯乱码解决
- AsyncSocket实现tcp/ip的通讯协议
- 解决Qt:TCP数据通信的中文乱码问题
- [VB.NET]TCP/IP协议进行通讯问题
- 解决.net中的用TCP协议进行通讯问题
- 解决android 显示中文字符串乱码的问题
- 解决php中截取字符串的中文乱码问题
- TCP/IP、Http、Soap都是基本的通讯协议。
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 使用SOCKET实现TCP/IP协议的通讯
- 取消百度识图爬虫源码的分享
- php实现数据树形结构 递归方法
- Minimum Number of Arrows to Burst Balloons问题及解法
- String:657. Judge Route Circle
- Unity导弹自动追踪算法
- [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
- windows线程创建与线程处理函数
- iOS开发应用上架必读最新苹果审核规则(史上最全版)
- Angular2之aot编译及Rollup优化
- mint-ui —— tab-container的使用
- leetcode 400. Nth Digit
- reduceByKey和groupByKey区别与用法
- linux常用命令&vim操作
- Linux/Mac实现下alias重命名命令永久生效