C#上位机与PLC和触摸屏通讯中字符串编码问题

实现功能:Mes下发报警数据后上位机进行截取,然后发送给PLC并在触摸屏上显示
————————————————————————————————————————————————————————————————————————
主要是字符串编码格式的问题,C#默认的字符串是UTF16编码,PLC是三菱的L04H,这一系列好像只支持UTF-16,但是威纶通MT8000触摸屏读取的是UTF-8的格式,还有使用旧版胡工库去写入的时候默认utf-16,最后统一使用了unicode编码的格式,因为三者都支持,C#旧版胡工库读取字符串也不能指定格式,导致我只能用byte数组读取出来后再转换成unicode格式字符串。虽然能正常显示但威纶通有些汉字会是小方框,并不是偏僻字,字体也是宋体,后来改用了黑体、微软雅黑、Simsun效果还不如宋体,其他字体大部分中文都无法显示,但是我C#读取转码过来的字是正常的,估计是触摸屏的软件有些问题,可能与字体渲染引擎有关。。

另外复习下编码格式:

ASCII UTF-8 UTF-16 UTF-32
不支持任何非英语字符 互联网最常用编码,相对节省空间 C#/.NET默认编码,Windows API和.NET框架内部使用 固定4字节编码

其他
GB2312/GBK/GB18030:中文编码标准
Big5:繁体中文编码
ISO-8859系列:欧洲语言编码
Shift-JIS:日文编码

posted @ 2025-06-07 17:17  悲伤的攻城狮  阅读(55)  评论(0)    收藏  举报