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中国語では、使用するコンパイラ自体の符号化フォーマットを明らかにする)
参考記事:
http://www.cnblogs.com/phoenixlaozhu/articles/2553180.html(この文章はよく書けていますが、お勧めです)
http://blog.csdn.net/ak47zhangzhiwei/article/details/7895422
(したがって、コードの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