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乱码尤其注意波特率问题。