在main.cpp中,已经设置了字符集。程序显示中文是没有问题的。
- QTextCodec* chineseCodec= QTextCodec::codecForLocale();
- QTextCodec::setCodecForLocale(chineseCodec);
- QTextCodec::setCodecForCStrings(chineseCodec);
- QTextCodec::setCodecForTr(chineseCodec);
在程序中某个地方我用QTextStream来输出一个html格式的报表文件。调试的时候显示的中文没有问题,但是写的文件用什么打开中文都是乱码(UE,记事本,Word,Firefox等)。
其中使用Firefox打开时还切换不同的字符集如Gb2312,UTf8等都是乱码。
我写html文件的部分代码如下:
- QString szFmt,szTmp;
- szTmp=tr("Rubber Plantation Recommended Fertilizer Report"); //报表头名称
- szTmp.replace("<","<");
- szTmp.replace(">",">");
- QFile file("E:/test.html");
- if(!file.open(QIODevice::ReadWrite)){
- AlarmBox(tr("Failed to open html file"));
- return ;
- }
- QTextStream ofs(&file);
- //QTextCodec* chineseCodec= QTextCodec::codecForLocale(); //试过,没用。
- ofs.setCodec(QTextCodec::codecForName("GB2312"));
- szFmt = tr(HTML_HEADER).arg(szTmp);
- ofs<<szFmt.toAscii().data()<<endl;
- szFmt = tr(HTML_HEAD_TITLE).arg(szTmp);
- ofs<<szFmt.toAscii().data()<<endl;
- ....
其中HTML_HEADER与HTML_HEAD_TITLE宏定义如下:
#define HTML_HEADER \
"\
<html>\n\
\n\
<head>\n\
<meta http-equiv=\"Content-Language\" content=\"zh-cn\">\n\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n\
<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">\n\
<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">\n\
<title>%1</title>\n\
</head>\n\
\n\
<body>\n\
"
#define HTML_HEAD_TITLE \
"\
<p align=\"center\"><b><font face=\"黑体\" size=\"6\">%1</font></b></p>\n\
反正没有弄清楚是怎么回事,请高手指点一二,谢谢。
"