开发的终端需要接入两个外设,二代证读取设备和打印机。
让人郁闷的是,两个设备的字符编码与终端系统不一致,一开始耗了不少时间,后来才注意到字符编码的问题。
二代证读出来的数据都是用unicode编码的,而打印子要求穿过去的数据要转换成unicode编码。
查阅了help文档,发现QT有自己的转换函数,那真是再好不过了。
首先是二代证的数据:
QString text = QTextCodec::codecForName("GB2312")->fromUnicode(str);
终端系统用的是GB2312编码,str是从二代证读出来的unicode编码的数据缓冲区
这样得到的text,就可以在终端上正常显示了。
关于打印机嘛,正好相反,它是要求我们传的数据转成unicode:
printBuf = QTextCodec::codecForName("GB2312")->toUnicode((text));
至于UTF-8或者其他的编码转换都雷同,查看qt帮助文档即可。