QT下中文字符编码的转换

转载于 http://blog.csdn.net/vah101/article/details/6093717


通常在qt程序的main函数中,经常会有设置字符编码的函数:

 

QTextCodec :: setCodecForTr( QTextCodec :: codecForName( "GB18030" ));  //为QObject::tr设置字符编码

QTextCodec :: setCodecForLocale( QTextCodec :: codecForName( "GB18030" ));  //如果在linux上,设置local为gb18030可能会导致读取

                                                                                                               //或输出的unicode中文字符不能正确显示

QTextCodec ::setCodecForCStrings(QTextCodec :: codecForName( "GB18030" ) );  //为QString设置字符编码,默认情况下为Latin1


比如之后,就可以输入

QLabel *testLabel = new QLabel( tr("测试") );

这样,不管是在windows上还是在X11平台上,就可以看到正确的显示结果了。


另外,在windows下,代码中输入的字符默认中文编码是GBK,但Linux上默认的中文编码的UNICODE,所以将windows上编写的含有中文qt代码,拿到linux上的QT creator修改时,首先要选择中文编码格式,否则代码中的汉字就会是乱码。

常用的GBK转换UTF8的代码如下,用了http://blog.csdn.net/ACCP_2008123456/archive/2010/11/05/5988704.aspx上的例子

 

    QTextCodec *gbk = QTextCodec::codecForName("gb18030");
    QTextCodec *utf8 = QTextCodec::codecForName("utf-8");

 

    QTextCodec::setCodecForTr(gbk);
    QTextCodec::setCodecForLocale(gbk);


    QString utfStr = QObject::trUtf8(readByte);    //utf-8
    QString gbkStr = QObject::tr("中文");          // gbk


    QString utf2gbk = gbk->toUnicode(readStr.toLocal8Bit());                  // utf8 conver  gbk
    QString gbk2utf1 = utf8->toUnicode(utf2gbk.toUtf8());                       // gbk  convert utf8
    QString g2u = gbk->toUnicode(gbk->fromUnicode(readStr));            // gbk  convert utf8


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值