Qt中的文本编码,以及tr函数

首先,要明确一个概念,源代码中的C字符串的编码就是源代码本身的编码。例如,同样是下列源代码,内容如下:

#include <stdio.h>
int main()
{
    char *str="你好";
    int i,c;
    for(i=0;str[i]!=0;i++) {
        c=(unsigned char)str[i];
        printf("%x ",c);
    }
    printf("\n");
    return 0;
}

在windows下,默认格式是GBK,输出结果:
c4 e3 ba c3
而在linux下,默认格式是UTF-8,上面代码输出:
e4 bd a0 e5 a5 bd 

在qt中,如果调用以下代码:
QString str=QString("hello");
QString str="hello";
如果不制定编码,QString将这些const char *按照latin1编码来解释的,并转换为Qt内部使用的Unicode编码。既相当于调用以下函数:
QString QString::fromLatin1(const char *str,int size=-1);
同样,QString包含几个类似的函数从不同格式c字符串进行转换:
QString QString::fromAscii ( const char * str, int size = -1 )
QString QString::fromLatin1 ( const char * str, int size = -1 ) 
QString QString::fromLocal8Bit ( const char * str, int size = -1 )
QString QString::fromUtf8 ( const char * str, int size = -1 )
我们可以使用:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
设置转换时所使用的函数。

tr函数是用来实现全球化,也就是说提供一个为程序实现不同语言版本的方法。tr中包含的字符串可以设置,从而在不同的语言的操作系统中显示不同的内容。其声明如下:
QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 )
所以简单的使用tr不能解决乱码问题。只有那些需要开发不同语言版本的软件,才需要使用tr对不同语言中显示不同文字的部分进行标注。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值