欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python开发sprintf()和QString中文乱码问题解决

程序员文章站 2022-03-11 16:08:19
解决sprintf()和QString中文乱码问题一、现象QString str;QString tip = QString::fromLocal8Bit("我是个好孩子:");QString tip2 = QString::fromUtf8(tip.toUtf8().data());str.sprintf("%s %d",tip2.toUtf8().data(), 14);textEdit->setPlainText (str);QString str;QString tip =...

解决sprintf()和QString中文乱码问题

一、现象
QString str;
QString tip = QString::fromLocal8Bit("我是个好孩子:");
QString tip2 = QString::fromUtf8(tip.toUtf8().data());
str.sprintf("%s %d",tip2.toUtf8().data(), 14);
textEdit->setPlainText (str);

QString str;
QString tip = QString::fromLocal8Bit("我是个好孩子:");
str.sprintf("%s %d", tip.toUtf8().data(), 14);
textEdit->setPlainText (str);

二、sprintf

srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~

头文件:stdio.h

函数功能:格式化字符串,将格式化的数据写入字符串中。

函数原型:int sprintf(char *buffer, const char *format, [argument]...)

参数:

(1)buffer:是char类型的指针,指向写入的字符串指针;

(2)format:格式化字符串,即在程序中想要的格式;

(3)argument:可选参数,可以为任意类型的数据;

函数返回值:buffer指向的字符串的长度;

用处:

(1)格式化数字字符串:在这点上sprintf和printf的用法一样,只是打印到的位置不同而已,前者打印给buffer字符串,后者打印给标准输出,所以sprintf也可以用来将整型转化为字符串,比itoa效率高且如此地简便~比如:sprintf(buffer, "%d", 123456);执行后buffer即指向字符串“123456”~

(2)连接以'\0'结束的字符串:

sprintf打印字符串必须以/0结尾作为结束。

因此,使用sprintf输出时,可能会因为没有结束的'\0'而多输出一些乱码或者字符。


三、解决办法
使用Qt fromLocal8Bit()函数可以设置编码。
Qt默认的编码是unicode,不能显示中文的
windows默认使用(GBK/GB2312/GB18030)
使用String::fromLocal8Bit()函数,实现了从本地字符集GB到Unicode的转换,用于处理汉语显示乱码等问题

本文地址:https://blog.csdn.net/qq_20853741/article/details/109049554

相关标签: QT编程