精华内容
下载资源
问答
  • 公司代码有多国语言支持,遇到需要使用QString转char 网上很多人一碰到编码问题就无脑的Copy上面3行…… 从Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式 QTextCodec::...

    公司代码有多国语言支持,遇到需要使用QString转char

    网上很多人一碰到编码问题就无脑的Copy上面3行……
    从Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式

    1. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));  
    2. QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));  
    3. QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));  

    查了一上午最终发现只需要将文本编码方式转一下就好

    转自:https://blog.csdn.net/AmyAndTommy/article/details/82256454

    任何编码先转换成统一编码toUnicode(),然后再转出fromUnicode();

    gb2312转utf8:

        QString ssss=QString::fromLocal8Bit("ceshi我是测试");  //注意此处定义gb2312编码的方式,要使用fromLocal8Bit()
        gb2312ToUtf8(ssss);

    utf8转gb2312:

        入参是utf8编码的字符数组

    (注意参数的编码格式一定要对,否则转换不出来,尤其是gb2312ToUtf8()这个函数,极为容易传入unicode编码格式的参数)

    上代码:

            void gb2312ToUtf8(QString strGb2312)
            {
                printf("@@@ gb2312 str is:%s\n",strGb2312.toLocal8Bit().data());
                QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
                QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
            
                QString strUnicode= gb2312Codec->toUnicode(strGb2312.toLocal8Bit().data());
                QByteArray ByteUtf8= utf8Codec->fromUnicode(strUnicode);
         
                char *utf8code = ByteUtf8.data();
                printf("@@@ Utf8  strGb2312toUtf8:%s\n",utf8code);
            }
         
        ///
         
            void utf8ToGb2312(char *strUtf8)
            {
                printf("~~~~ utf8  str is:%s\n", strUtf8);
                QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
                QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
                
                QString strUnicode= utf8Codec ->toUnicode(strUtf8);
                QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
            
                strUtf8= ByteGb2312.data();
                printf("~~~~~ gb2312    strUtf8toGb2312:%s\n", strUtf8);
            }

    修改了一下utf8ToGb2312使之转换后的gb2312字符串类型为QString:

            QString utf8ToGb2312(char *strUtf8)
            {
                printf("~~~~utf8  strUtf8:%s\n", strUtf8);
                QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
                QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
                
                QString strUnicode= utf8Codec ->toUnicode(strUtf8);
                QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
            
                strUtf8= ByteGb2312.data();
                printf("~~~~~gb2312    strUtf8toGb2312:%s\n", strUtf8);
                return QString::fromLocal8Bit(strUtf8);//注意这里要fromLocal8Bit()
            }

    转自:https://blog.csdn.net/AmyAndTommy/article/details/82256454

    展开全文
  • QString toLatin1 toUtf8 toLocal8Bit toUtf8utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关 toLatin1:ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF ...

    QString 转toLatin1 toUtf8 toLocal8Bit
    toUtf8:utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关
    toLatin1:ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF
    toLocal8Bit:gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种

    展开全文
  • QByteArray(UTF8编码串)转QString

    千次阅读 2013-04-04 21:39:56
    QTextCodec *tc = QTextCodec::codecForName("UTF8"); QByteArray ba = 读到的QByteArray串; QString str = tc->toUnicode(ba); cout 这个时候,就能够正常显示中文了。

    QTextCodec *tc = QTextCodec::codecForName("UTF8");

    QByteArray ba = 读到的QByteArray串;

    QString str = tc->toUnicode(ba);

    cout<<str<<endl;

    这个时候,就能够正常显示中文了。

    展开全文
  • 任何编码先转换成统一编码toUnicode(),然后再转出fromUnicode(); gb2312转utf8:  QString ssss=QString::fromLocal8Bit("ceshi我是测试"); //注意此处定义gb2312编码的...utf8转gb2312:  入参是u...

    任何编码先转换成统一编码toUnicode(),然后再转出fromUnicode();

    gb2312转utf8:

        QString ssss=QString::fromLocal8Bit("ceshi我是测试");  //注意此处定义gb2312编码的方式,要使用fromLocal8Bit()
        gb2312ToUtf8(ssss);

    utf8转gb2312:

        入参是utf8编码的字符数组

    (注意参数的编码格式一定要对,否则转换不出来,尤其是gb2312ToUtf8()这个函数,极为容易传入unicode编码格式的参数)

    上代码:

    	void gb2312ToUtf8(QString strGb2312)
    	{
    		printf("@@@ gb2312 str is:%s\n",strGb2312.toLocal8Bit().data());
    		QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
    		QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    	
    		QString strUnicode= gb2312Codec->toUnicode(strGb2312.toLocal8Bit().data());
    		QByteArray ByteUtf8= utf8Codec->fromUnicode(strUnicode);
    
    		char *utf8code = ByteUtf8.data();
    		printf("@@@ Utf8  strGb2312toUtf8:%s\n",utf8code);
    	}
    
    ///
    
    	void utf8ToGb2312(char *strUtf8)
    	{
    		printf("~~~~ utf8  str is:%s\n", strUtf8);
    		QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
    		QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    		
    		QString strUnicode= utf8Codec ->toUnicode(strUtf8);
    		QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
    	
    		strUtf8= ByteGb2312.data();
    		printf("~~~~~ gb2312	strUtf8toGb2312:%s\n", strUtf8);
    	}

    修改了一下utf8ToGb2312使之转换后的gb2312字符串类型为QString:

    	QString utf8ToGb2312(char *strUtf8)
    	{
    		printf("~~~~utf8  strUtf8:%s\n", strUtf8);
    		QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
    		QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    		
    		QString strUnicode= utf8Codec ->toUnicode(strUtf8);
    		QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
    	
    		strUtf8= ByteGb2312.data();
    		printf("~~~~~gb2312	strUtf8toGb2312:%s\n", strUtf8);
    		return QString::fromLocal8Bit(strUtf8);//注意这里要fromLocal8Bit()
    	}

     

    展开全文
  • Qt ansi编码转utf8编码

    千次阅读 2018-04-12 11:46:23
    #ifdef _CUR_SYS_LINUX_ #include &lt;iconv.h&gt; #else #include &lt;...#endifQByteArray ViewImage::AnsiToUtf8(QByteArray &amp;ansi) { #ifdef _CUR_SYS_LINUX_ QByteAr...
  • QString 中文编码转换

    万次阅读 2017-07-10 22:17:26
    QString GBK2UTF8(const QString &str) { QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); return utf8->toUnicode(str.toUtf8()); } QString UTF82GBK(const QString &str) { QTextCodec *gbk
  • 1 window中文GBK编码和Unicode编码转换 //GBK‐> QString QString str = QString::fromLocal8Bit("新浪微博"); //QString ‐> GBK QString text = ui.lineEdit‐>text(); QByteArray bytes = text.toLocal8Bit(); ...
  • Qt中QString转char*以及编码的问题

    千次阅读 2018-02-01 14:09:02
    就需要了解Qt到编码,以及如何从QString 转化为char *类型。以读取ini文件为例。1.编码转换 读取ini文件需要用到QSetting类,读取方法如下:http://blog.csdn.net/yaowangii/article/details/78733022 此时我们...
  • QString 类包含了大量关于文本字符串编码转换的函数,涉及之前提到的 UTF-8UTF-16、UTF-32、本地语言编码 Local8Bit,还有标准 C++ 的普通字符串 StdString 和宽字符串 StdWString,对于其他编码转为 QString,...
  • 在主函数app后加上这句: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030")); ...然后是从UTF8编码到GB编码的...QString Utf8_To_GB(QString strText){ return QString::fromUtf8(strText.to...
  • QString编码转换

    千次阅读 2019-05-20 14:58:31
    QString内部是将字符串保存为Unicode编码的,所以无论传入的字符串是什么编码,都会将其转为Unicode,那有一个问题就需要明确: QString构建的时候是如何知道传入的是什么编码的? 这个就要看QString的构造函...
  • QByteArray QString Base64 UTF8

    千次阅读 2016-05-12 09:53:11
    QByteArray bytearray64 = jsonValue.toString().toUtf8(); QByteArray bytearraytheme = QByteArray::fromBase64(bytearray64);  QString temp = QString::fromUtf8(bytearraytheme);
  • 1、gbk转换为utf-8 QString strUtf8 = QString::fromLocal8Bit(char* strGBK); 2、utf-8转换为gbk QString strGBk = QString::fromUtf8(QString strUtf8);
  • 有一个打印机,只支持gdk编码, 而我的程序是linux, utf8是本地编码. 我需要一个简单的utf8向gdk转换的程序. 网上大多不能直接使用, 下面附上自己整理和测试的代码. 花了我不少时间, QT 环境. 代码解读: utf8 与 gdk ...
  • 在主函数app后... <br /> <br />然后是从UTF8编码到GB编码的字符串转换方法:引用 <br />QString Utf8_To_GB(QString strText) {  return QString::fromUtf8(strText.toLocal8Bit()
  • qt utf8编码与gbk编码转换

    千次阅读 2018-04-08 21:37:49
    #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &... void printContent(char *p) int main() { QTextCodec *utf8 = QTextCodec::codecForName...
  • QString 编码转换

    2015-12-28 14:31:00
    参考网址:...  (网页保存于:百度云CodeSkill33 --> 全部文件 > 来自__网页 > Qt5_for_Win > QString与中文问题__20151228_1432.rar) 1、 我的测试代码: void MainWindow...
  • 由于项目需要,需要对网络资源进行解码。遇到编码问题。研究了下基本编码原理。于是有了下面两个通用代码 ... // unicode转utf-8 思路: 一个unicode编码占用2字节。所以只需要用4个16进制数字结合表示就行了 QS
  • Qt中文编码QString类Unicode编码转换

    万次阅读 多人点赞 2016-08-16 16:38:21
    1 window中文GBK编码和Unicode编码转换 //GBK‐> QString QString str = QString::fromLocal8Bit("新浪微博"); //QString ‐> GBK QString text = ui.lineEdit‐>text(); QByteArray bytes = text.to...
  • 放入QString的时候会变成 \u0011 和 \u0022这时候已经是UTF8编码了。为了解决这个问题,就引入QByteArray,QBytearray不会默认的帮你转换编码 该是多少就是多少 下面是我写的GBK编码UTF-8编码互相转换的函数。...
  • QString以16位unicode方式存储,用16位表示一个字符。 正常情况下在程序中使用同一的编码即可,但有时需要将字符串发送...toLocal8Bit()将字符串转换为本地的编码,toUtf8()将字符串转换为utf-8。 这些函数返回..
  • 1、qt 下 utf8编码与gbk编码的相互转换----https://blog.csdn.net/wuquan_1230/article/details/109026558 /* * author: hjjdebug * date: 2017年 09月 01日 星期五 22:35:38 CST * 说明: * 有一个打印机,只支持gdk...
  • 彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

    万次阅读 多人点赞 2014-02-15 16:46:22
    一、Qt环境设置 Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码: 默认编码:System(简体中文windows系统默认指的是GBK编码,即下拉框选项里的...Qt常见的两种编码是:UTF-8和GBK ★UTF-8:Unicode Transformat
  • 在使用Windows平台MFC的Socket与Linux平台Qt的Socket通信时遇到中文乱码问题,最后发现是两边的编码格式不一致导致的乱码,最后使用了iconv把GBK编码转为了UTF-8编码格式再输出。 主要内容 头文件#include <...
  • 是将QString以自己正确的编码方式读取并转换成编译器编码方式的字节流,   而string本身就是字节流没有编码方式,等需要他时编译器会以编译器的编码读取方式读取并且没什么问题,至于显示是否是乱码得看很多东西...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,706
精华内容 1,482
关键字:

qstring转utf8编码