• 7314阅读
  • 0回复

[提问]QTextStream写文件内容为乱码问题 [复制链接]

上一主题 下一主题
离线bangqianchen
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-10
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
在main.cpp中,已经设置了字符集。程序显示中文是没有问题的。
  1. QTextCodec*  chineseCodec= QTextCodec::codecForLocale();
  2. QTextCodec::setCodecForLocale(chineseCodec);
  3. QTextCodec::setCodecForCStrings(chineseCodec);
  4. QTextCodec::setCodecForTr(chineseCodec);


在程序中某个地方我用QTextStream来输出一个html格式的报表文件。调试的时候显示的中文没有问题,但是写的文件用什么打开中文都是乱码(UE,记事本,Word,Firefox等)。
其中使用Firefox打开时还切换不同的字符集如Gb2312,UTf8等都是乱码。
我写html文件的部分代码如下:
  1.        QString szFmt,szTmp;
  2.     szTmp=tr("Rubber Plantation Recommended Fertilizer Report");  //报表头名称
  3.     szTmp.replace("<","<");
  4.     szTmp.replace(">",">");
  5.     QFile    file("E:/test.html");
  6.     if(!file.open(QIODevice::ReadWrite)){
  7.         AlarmBox(tr("Failed to open html file"));
  8.         return ;
  9.     }
  10.     QTextStream ofs(&file);
  11.     //QTextCodec*  chineseCodec= QTextCodec::codecForLocale(); //试过,没用。
  12.     ofs.setCodec(QTextCodec::codecForName("GB2312"));
  13.     szFmt = tr(HTML_HEADER).arg(szTmp);
  14.     ofs<<szFmt.toAscii().data()<<endl;
  15.     szFmt = tr(HTML_HEAD_TITLE).arg(szTmp);
  16.     ofs<<szFmt.toAscii().data()<<endl;
  17.        ....

其中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\

反正没有弄清楚是怎么回事,请高手指点一二,谢谢。
"
快速回复
限100 字节
 
上一个 下一个