QT的字符编码转换 .

来源:互联网 发布:xampp怎么配置mysql 编辑:程序博客网 时间:2024/05/19 02:17

开发的终端需要接入两个外设,二代证读取设备和打印机。

让人郁闷的是,两个设备的字符编码与终端系统不一致,一开始耗了不少时间,后来才注意到字符编码的问题。

二代证读出来的数据都是用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帮助文档即可。