Qt纯C编程printf输出中文乱码的解决办法

Google

qt printf中文乱码        

前言

1. 这个问题是和QT本身对于文本编码的设置和CMD显示时文本编码的设置不一致导致的。

2. QtCreate默认文本的编码是UTF-8,而CMD控制台的默认编码是GBK。

知识点

Qt常见的两种编码是:UTF-8和GBK
★UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
★GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。GBK是GB2312的扩展,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名。
★GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
★在简体中文windows系统下,ANSI编码代表GBK/GB2312编码,ANSI通常使用0x80~0xFF范围的2个字节来表示1个中文字符。0x00~0x7F之间的字符,依旧是1个字节代表1个字符。Unicode(UTF-16)编码则所有字符都用2个字节表示。

解决方法

1. 用NotePad改xx.c / xx.h为GBK

2. Qt设置如下

 测试

int main()
{//SDK 入口点
    printf("Enter SDK's main()!\n");
    printf("这是一个中文打印测试\n");
    printf("the end!\n");
    getchar();

    user_main();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u012915636/article/details/124690046