zoukankan      html  css  js  c++  java
  • QT4.6中文GB2312与utf-8和unicode及URL encoding %编码汇总

    QT4.6中文GB2312与utf-8和unicode及URL encoding %编码汇总


    说明: 转载

    windows中ie地址栏写“我们”发送到服务器端会变为“%CE%D2%C3%C7”,是GB2312转换成URL 百分号编码的形式
    ubuntu中firefox地址栏写“我们”发送到服务器变成"%E6%88%91%E4%BB%AC",是UTF-8转换成URL 百分号编码的形式


    下面分享汇总后的转换代码:(我的环境:ubuntu9.10 QT4.6)
                    //Ubuntu firefox http get "我们" %E6%88%91%E4%BB%AC UTF-8
                    //Windows ie http get "我们" %CE%D2%C3%C7 GB2312
                    char* s="0x我们";   //UTF-8 char*
                    QString strT1="0x%CE%D2%C3%C7";  //GB2312的URL百分号编码
                    QByteArray baT1,baT2,baT3,baT4;
                    PercentEncoding2ByteArray(strT1, baT1);  //自己写的函数,由于QUrl::fromPercentEncoding仅适用UTF-8的URL编码

                    strT1=QTextCodec::codecForName("GB2312")->toUnicode(baT1);  //GB2312's QByteArray Convert to QString Unicode
                    baT2=QTextCodec::codecForName("GB2312")->fromUnicode(strT1);    //QString Unicode convert to GB2312 QByteArray
                    QString strT2,strT3,strT4,strT5;
                    strT2=QTextCodec::codecForName("UTF-8")->toUnicode("0x我们"); //UTF-8 Char* to Unicode QString
                    baT3=QTextCodec::codecForName("UTF-8")->fromUnicode(strT2);     //Unicode QString to UTF-8 QByteArray
                    strT3=QTextCodec::codecForName("UTF-8")->toUnicode(s); //UTF-8 Char* to Unicode QString
                    strT4=QUrl::toPercentEncoding(QString::fromLocal8Bit(s));   //UTF-8 Char* to PercentEncoding (UTF-8 format)
                    strT5=QUrl::fromPercentEncoding("0x%E6%88%91%E4%BB%AC");    //PercentEncoding (UTF-8 format) to Unicode

                    baT4=QTextCodec::codecForName("GB2312")->fromUnicode(QTextCodec::codecForName("UTF-8")->toUnicode(s));  //UTF-8 Char* to GB2312 QByteArray

    另附一个小函数:(用于GB2312的URL百分号编码转换)
        void PercentEncoding2ByteArray(QString strInput, QByteArray & ByteArrayOut)
        {
            for(int i=0; i<strInput.length();)
            {
                if (0==QString::compare(strInput.mid(i,1), QString("%")))
                {
                    if ((i+2)<strInput.length())
                    {
                        ByteArrayOut.append(strInput.mid(i+1,2).toShort(0,16));
                        i=i+3;
                    }
                    else
                    {
                        ByteArrayOut.append(strInput.mid(i,1));
                        i++;
                    }
                }
                else
                {
                    ByteArrayOut.append(strInput.mid(i,1));
                    i++;
                }
            }//For end

        }// PercentEncoding2ByteArray end
  • 相关阅读:
    20170226-云计算设计模式翻译-自动伸缩指南(逐字翻译)
    20170723-Ioc与AOP
    20170710-几维晨规
    诸城项目-开发日志
    GPS常识-B版(简)
    GPS常识-A版(详)
    20141209-基本概念-BlogEngine.NET(1)-笔记
    9.聚类分析
    7.分类:基本概念 忌讳
    6.挖掘关联规则
  • 原文地址:https://www.cnblogs.com/ggggyj/p/5054370.html
Copyright © 2011-2022 走看看