数据传输与字符编码、解码的问题,嵌入式装设备通过232驱动打印机,打印乱码

1、文件编码问题

920装置中字符编码均采用UTF8编码,也就是存储到计算机存储上的二进制数,都是按照UTF8的对应表来存储的。英文字符在UTF8和GBK中对应的二进制数都是一样的。但是同一个汉字在UTF8和GBK中对应的二进制数不一样。所以存储的时候以UTF8的对照表存,传输的时候从内存中读取那传出的内容也是按照UTF8对应的二进制传出去的。对方只有同样采样UTF8的字符表对应的去翻译才不会乱码。而偏偏打印机不支持UTF8编码,只支持GB18030,这里拓展以下,GB2312是在GBK的基础上拓展的,GB18030又是在GB2312的基础上拓展的,所以GB18030囊括了GBK、GB2312编码的全部内容。

装置上是UTF8编码,打印机上只支持GB18030编码,所以在传输出去之前,做一道编码转换。将UTF8编码的串转化成GBK的串再传出去,打印机接收到按照GBK的方式解码,这样乱码问题就解决了。

2、232波特率问题

在实际操作过程中,通过以上内容解决了USB驱动打印乱码的问题,但是到232串口驱动打印机还是乱码,连英文字符都是乱码。所以考虑是波特率的问题。此时Ioctl只能设置装置的波特率,而打印机的波特率未知,所以只能一遍遍的给装置设置不同的波特率来试。最终试出来确实是波特率的问题。232乱码尤其注意波特率问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值