在网上搜集子大量信息,再经过自己的不断测试,试出了一些可行方法。
首先使用中文 必须告诉QT 使用什么编码. 然后在使用时注意转换使用的函数。
例子1 :http://www.qtcn.org/bbs/read-htm-tid-36076-fpage-27.html
http://blog.csdn.net/u010411742/article/details/9062379
贴出来 我的代码
编码可用的
方式一:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
方式二:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
方式三:
QTextCodec *codec = QTextCodec::codecForName("GB18030");
//QTextCodec *codec = QTextCodec::codecForName("gb2312");
//QTextCodec *codec = QTextCodec::codecForName("UTF-8");
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
方式四:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QString aaa= QString("我是汉字工中服");
QString bbb="哈哈afaf394的AAA";
char *ad = aaa.toLocal8Bit().data();//.toLocal8Bit().data();
printf(" good! ad=%s,size=%d\n",ad,strlen(ad));
printf打印出来是正常的中文字符。但是使用 qdebug 函数打印出来还是乱码,这个不解,有待调查。
QT的一些函数
QString QString::fromAscii ( const char * str, int size = -1 )
QString QString::fromLatin1 ( const char * str, int size = -1 )
QString QString::fromLocal8Bit ( const char * str, int size = -1 )
QString QString::fromUtf8 ( const char * str, int size = -1 )