使用QString定义一个中文字符串,发现了很无语的问题,能否识别汉字竟然与汉字的个数有关!!!
我使用的是qt-creator,编译器是Microsoft Visual C++ Compiler 10.0 (MSCV)。
查看creator编辑->选择编码,里面默认UTF-8编码。
#include "widget.h"
#include <QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
// QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
//QString str1("我"); // error, C2001:newline in constant
//QString str2("我我"); // OK
//QString str3("我我我"); // error
//QString str4("我我我我"); // OK
//QString str5("我我我我我"); // error
//QString str6("我我我我我我"); // OK
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
QString定义英文肯定是没有问题的,为了定义中文,按照网上的结果,设置编码格式,分别尝试过UTF-8和GBK。当输入的中文个数不同时,结果也不同,详细见代码!奇数个汉字全部报错了,偶数个函数全部通过编译!!!
请问这是怎么回事?!
------解决思路----------------------
你这是Qt 4啊。
看CSDN上dbzhang800的博客吧。