c# serialport 怎么发送汉字? 我做一个c# 利用serialport通过串口进行条码打印的程序,打印英文字符都是正常的,怎么打印汉字的时候显示的都是???啊?请高手指点,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 串口作为一种流设备,处理的是基本的字节数组,也就是字节流。发送方按一定协议发送,接收方按一定协议接受,至于是否是汉字,都没一点关系。发送之前把汉字序列化为字节流,比如byte[] send = Encoding.Default.GetBytes("汉字");接收端确认接收完整、正确后,反向的string text = Encoding.Default.GetString(bytesRead);是不会出错的。关键在于你接收方是否能确认接收完整、以及字符集是否一致。可以识别汉字的字符集很多,都可以尝试一下,例如:Encoding.GetEncoding(936)Encoding.GetEncoding("GB2312")Encoding.UTF7Encoding.UTF8Encoding.UNICODE 谢谢各位帮忙,我是用厂家打印机支持的PGL语言直接通过串口发指令进行打印的,在串口调试助手里面发送的汉字是可以打印出来的,但是我用serialport.writeline("汉字")时,就不行了啊 硬件设备汉字一般大多数用的是GB2312,你用 System.Text.Encoding _en = System.Text.Encoding.GetEncoding("GB2312"); byte[] _buffer= _en.GetBytes("汉字"); serialport.Write(_buffer, 0, _buffer.Length);试试 serialport.writeline("汉字")时,就不行了啊初始化一下serialport.Encoding设置一下试试,默认是ASCII,发不成中文,如我2楼所说。你转换成字节数组再发字节数组,或是设置这个属性为正确的格式,一般来说。设备上用的应该是GB2312。也就是CodePage为936的。设置serialport.Encoding = Encoding.GetEncoding(936);然后调用你的发送就对了。 c#实现将一个数据库的数据导入到另一个数据库中? 如何实现这样的循环 关于VS语言包,求助!!谢谢 C# 打印报表的问题 请教c#制作svg图元 〔在线〕不同网段的机器连通问题 WinForm datagridview 数据库查询自动选择某行.. 各编程软件的选择? 快捷键的问题????????????????????? c#实现文件传输代码参考 多线程 ftp 上传问题 动态载入的dll依赖问题
byte[] send = Encoding.Default.GetBytes("汉字");
接收端确认接收完整、正确后,反向的
string text = Encoding.Default.GetString(bytesRead);
是不会出错的。关键在于你接收方是否能确认接收完整、以及字符集是否一致。
可以识别汉字的字符集很多,都可以尝试一下,例如:
Encoding.GetEncoding(936)
Encoding.GetEncoding("GB2312")
Encoding.UTF7
Encoding.UTF8
Encoding.UNICODE
System.Text.Encoding _en = System.Text.Encoding.GetEncoding("GB2312");
byte[] _buffer= _en.GetBytes("汉字");
serialport.Write(_buffer, 0, _buffer.Length);
试试
然后调用你的发送就对了。