QString中国語コード変換

1200 ワード

QT文字コードの開発には多くの穴があり、うっかりすると中国語の文字化けしてしまうので、ここでまとめてみましょう.
  • QString自体が符号化unicode
  • windowsでlocal 8 BitはGBK
  • ソースコードである.cppファイルは符号化されており、異なるコンパイラにもデフォルトの符号化があります.例えば、
  • マイクロソフトVSの中のclはGBK
  • を採用
  • Mingwのg++BOMなしUTF-8
  • Linuxでのg++はBOM付きUTF-8の3で符号化して
  • 保存する.

    (したがって、コードのhard code中国語では、使用するコンパイラ自体の符号化フォーマットを明らかにする)
    QString GBK2UTF8(const QString &str)
    {
        QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
        return utf8->toUnicode(str.toUtf8());
    }
    
    QString UTF82GBK(const QString &str)
    {
        QTextCodec *gbk = QTextCodec::codecForName("GB18030");
        return gbk->toUnicode(str.toLocal8Bit());
    }
    
    std::string GBK2UTF8(std::string &str)
    {
        QString temp = QString::fromLocal8Bit(str.c_str());
        std::string ret = temp.toUtf8().data();
        return ret;
    }
    
    std::string UTF82GBK(std::string &str)
    {
        QString temp = QString::fromUtf8(str.c_str());
        std::string ret = temp.toLocal8Bit().data();
        return ret;
    }

    参考記事:
    http://www.cnblogs.com/phoenixlaozhu/articles/2553180.html(この文章はよく書けていますが、お勧めです)
    http://blog.csdn.net/ak47zhangzhiwei/article/details/7895422