精华内容
下载资源
问答
  • 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系统可能使用的就是这两种的一种

    展开全文
  • 公司代码有多国语言支持,遇到需要使用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

    展开全文
  • 1.std::string QString QString StrToQStr(const char* s) { if ( NULL == code ) { code = QTextCodec::codecForName("GBK"); if ( NULL == code ) { code = QTextCodec::codecForName("GB18030");...
    QString g_sCodec;
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    
    #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) && QT_VERSION >= QT_VERSION_CHECK(4, 0, 0)
    	QTextCodec* code = QTextCodec::codecForName("GBK");
    	g_sCodec = "GBK";
    	if (!code)
    	{
    		code = QTextCodec::codecForName("GB18030");
    		g_sCodec = "GB18030";
    		if (!code)
    		{
    			code = QTextCodec::codecForLocale();
    		}
    	}
    
    	QTextCodec::setCodecForCStrings(code);
    	QTextCodec::setCodecForTr(code);
    #endif
        ....
    	return a.exec();
    }

     

    1. const char* 转 QString 

    static QTextCodec *code = NULL;
    QString StrToQStr(const char* s)
    {
    	if ( NULL == code )
    	{
    		code = QTextCodec::codecForName("GBK");
    		if ( NULL == code )
    		{
    			code = QTextCodec::codecForName("GB18030");
    			if (!code)
    			{
    				code = QTextCodec::codecForLocale();
    				if (!code)
    					return "";
    			}
    		}
    	}
    
    	return code->toUnicode( s );
    }
    

    2. QString 转 std::string

    static QTextCodec *code = NULL;
    std::string QStrToStr(const QString& s)
    {
    	if ( NULL == code )
    	{
    		code = QTextCodec::codecForName("GBK");
    		if ( NULL == code )
    		{
    			code = QTextCodec::codecForName("GB18030");
    			if (!code)
    			{
    				code = QTextCodec::codecForLocale();
    				if (!code)
    					return "";
    			}
    		}
    	}
    
    	return code->fromUnicode( s ).data();
    }

    3.  utf-8 转QString

    static QTextCodec *uft8code = NULL;
    QString Utf8ToQStr(const char* s)
    {
    	if ( NULL == uft8code )
    	{
    		uft8code = QTextCodec::codecForName("UTF-8");
    		if ( NULL == uft8code )
    			return "";
    	}
    
    	return uft8code->toUnicode( s );
    }

     

    展开全文
  • #ifndef _QT_UTF8_H #define _QT_UTF8_H #include &lt;QString&gt; #include &lt;string&gt; using std::string; class AfUtf8 { public: // QString(Unicode) -&gt; std::str...

    AtUtf8.h

    #ifndef _QT_UTF8_H  
    #define _QT_UTF8_H  
      
    #include <QString>  
    #include <string>  
    using std::string;  
      
    class AfUtf8  
    {  
    public:  
        // QString(Unicode) -> std::string (UTF8)  
        static string ToString(const QString& qstr)  
        {  
            QByteArray arr = qstr.toUtf8();  
            string cstr = arr.data();  
            return cstr;  
        }  
      
        // std::string (UTF8) -> QString(Unicode)  
        static QString ToQString(const string& cstr)  
        {  
            QString qstr = QString::fromUtf8(cstr.c_str(), cstr.length());  
            return qstr;  
        }  
    };  
    #endif  

    AtGbk.h

    #ifndef _QT_GBK_H  
    #define _QT_GBK_H  
      
    #include <QString>  
    #include <QTextCodec>  
    #include <string>  
    using std::string;  
      
    class AfGbk  
    {  
    public:  
        // QString(Unicode) -> std::string (GBK)  
        static string ToString(const QString& qstr)  
        {  
            QTextCodec* pCodec = QTextCodec::codecForName("gb2312");  
            if(!pCodec) return "";    
      
            QByteArray arr = pCodec->fromUnicode(qstr);  
            string cstr = arr.data();  
            return cstr;  
        }  
      
        // std::string (GBK) -> QString(Unicode)  
        static QString ToQString(const string& cstr)  
        {  
            QTextCodec* pCodec = QTextCodec::codecForName("gb2312");  
            if(!pCodec) return "";  
      
            QString qstr = pCodec->toUnicode(cstr.c_str(), cstr.length());  
            return qstr;  
        }  
      
    };  
    #endif  

    参考:

    https://www.yuque.com/docs/share/8eebd7d1-ed5f-4e13-9fc2-9af84c7bf163

    展开全文
  • QString转QJsonValue

    千次阅读 2018-09-07 14:48:47
    QJsonValue stringToJson(const QString &amp;str) {  QString context = QString("{%1}"... QJsonDocument doc = QJsonDocument::fromJson(context.toUtf8(), &amp;err); ...
  • QByteArray(UTF8编码串)转QString

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

    2014-06-24 20:27:00
    1 QString str = QString("QString转换为char*"); 2 char *ch; 3 QByteArray ba = str.toUtf8(); 4 ch = ba.data(); 转载于:https://www.cnblogs.com/onetaste/p/3806818.html
  • string与QString转换

    2016-12-05 20:44:02
    AtUtf8.h #ifndef _QT_UTF8_H #define _QT_UTF8_H #include #include using std::string; class AfUtf8 ... // QString(Unicode) -> std::string (UTF8) static string ToString(const QString& qstr)
  • void QStringToChar (QString qStr) { //QString char* 先成QByteArray类型 再char* char *str = qStr.toUtf8().data(); }  
  • QString转16进制QString 最基础的用法。最简单的技巧就是先转一下QByteArray格式。其中原本的字符串为str。 QByteArray array = str.toUtf8(); QString string1=array.toHex(); 转换的效果 可以明显的看出虽然已经...
  • Qt将QString转换成ASCII码

    千次阅读 2019-05-22 05:48:52
    Qt将QString转换成ASCII码 原理很简单,获取字符串的UTF-8编码,然后逐个读取强转成int类型即可。...QByteArray byte = s.toUtf8(); for(int i = 0; i < s.size(); i++) { qDebug() << int(byte.at(i)...
  • PyQt QString转成python stirng

    千次阅读 2016-04-07 19:04:44
    参考文章:... def QString2PyString(self, qStr): # # QString,如果内容是中文,则直接使用会有问题,要转换成 python string return unicode(qStr.toUtf8(), 'utf-8', 'ig
  • Qt下 QString转char*

    2016-08-14 14:22:59
    原文地址::... 相关文章 1、QString和char*的汉字乱码问题----http://blog.csdn.net/ilearncpp/article/details/8104253 2、Qt GBK编码QString通过toUtf8转码后发现时乱码
  • Qt QString转换成ASCII码

    千次阅读 2020-04-29 17:38:22
    QString str = "C:\Users\Desktop\test.txt"; QByteArray byte = str.toUtf8(); for(int i = 0; i < str.size(); i++) { qDebug() << byte.at(i); }
  • QString转换为 QByteArray

    2015-08-17 14:07:13
    QByteArray ba3 = ui->LE_Recordpath2->text().toUtf8();
  • 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
  • 支持中文收发,默认GB2312编码,如需Unicode/UTF8/UTF16需要更改代码。(巨重要) https://bbs.csdn.net/topics/350007957
  • QT中QString转到string类型

    千次阅读 2014-02-26 13:56:41
    std::string QString::toStdString() const Returns a std::string object with the data contained in this QString. The Unicode data is converted into 8-bit characters using the toUtf8() function.
  • QString strFileName = QString::fromUtf8("测试"); QByteArray byteFileName = strFileName.toUtf8(); int iFileNameLen = byteFileName.len...
  • 我在Linux环境下采用Qt开发平台 使用QString的方法tostdstring()的时候,会乱码。  Linux的Qt开发环境下存储字符串的方式是Qstring...不是标准的Uft-8格式,所以将Qstring转成std::string格式后中文路径及文件出现
  • QString s; QTextCodec *tc = QTextCodec ::codecForName(...//GBK是windows下的中文字体”UTF-8”是QT中字体 QTextCodec::setCodecForLocale(QTextCodec::codecForName(“GBK”)); arrayData=s.toLocal8Bit(); ...
  • QString string char*互

    2021-02-02 09:15:22
    QByteArray qByteArray = qStr.toUtf8(); char* cStr = qByteArray.data(); 2、char*转QString //char*转QString char *pCStr ="中国"; QString qStr(pCStr); 3、QString转string //qstring转strin...
  • python 中将Qstring 转换string ,str

    千次阅读 2015-05-25 14:59:28
    camera = self.lineEdit_2.text() pyqt中的获取的输入框文本,在python中,有中文时,需要转化 unicode(camera.toUtf8(), 'utf-8', 'ignore')
  • #include #include #include #include void MainWindow::on_pushButton_clicked() {   /*  只有8位编码的才需要tr, unicode不要tr ... 所谓的QString转char*,结果并不相同,根据编码
  • QString内部采用的是unicode编码,但是unicode编码有很多种,在实际应用时应制定具体的编码形式,常见的有GBK、GB2312和UTF-8等。 UTF-8是解决国际上字符的一种多字节编码,它包含全世界国家所用到的所有字符,通用...
  • QString CString char转换

    千次阅读 2013-07-31 09:49:37
    QString CString char转换 qstring is unicode. utf16 in qt4. ...QString fromAscii ( const char * str, int size = -1 ) ...QString fromLatin1 ( const char * str, int size = -1 ) ...QString fromLocal8Bit (
  • qt读取中文xml转utf8并发送

    千次阅读 2018-07-17 19:49:37
    最近搞个东西需要读取xml,然后tcp发送给另一个系统,xml有中文的时候传输错误,最后通过以下办法解决,首先...,然后读取,utf8传输。关键代码如下: QFile file(filename);//文件名称 QString str ; ...
  • 1 问题  当我使用python2环境的时候,因为对编码、解码的理解不是太好。所以,由pyqt4的文本框获得的...string = unicode(QString).encode(‘utf-8’) 如下示例代码: from PyQt4 import QtCore a = QtCore.Q...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 223
精华内容 89
关键字:

qstring转utf8