Python开发sprintf()和QString中文乱码问题解决
解决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