• 5773阅读
  • 6回复

[提问]QTextStream 输出,win下乱码,linux下正常,求教 [复制链接]

上一主题 下一主题
离线hawkingyy
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-12
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
  1. .................
  2. //前面初始化一个数组F[i][j]
  3. ....................
  4. if(file.open(QIODevice::WriteOnly | QIODevice::Text))
  5.     {
  6.         QTextStream stream(&file);
  7.         stream.setCodec("UTF-8");           //UTF-8和GB2312都试过了
  8.         for(i=0;i<=76;i++)
  9.             for(j=0;j<=76;j++)
  10.         {
  11.                 if(j>76)
  12.                 {
  13.                     stream<<"\n";
  14.                 }
  15.                 else
  16.                     stream<<F[i][j]<<"   ";
  17.         }
  18.         file.close();
  19.     }
  20.     return a.exec();



UTF-8和GB2312都试过了,只要在win下用记事本打开生成文件,就全是乱码。将生成的TXT文件另存为各种编码都试过了………… 还是乱码,但是,用CMD里的TPYE命令查看该TXT,显示正常。另外,linux下该文本也显示正常。

PS:F[j]里全是double型的浮点数。

求助各位大侠啊!!!
离线benbenmajia

只看该作者 1楼 发表于: 2012-05-14
以前碰到这个问题的时候我记得是输出的时候要转换编码,具体怎么样忘记了
安然.....
离线hawkingyy
只看该作者 2楼 发表于: 2012-05-14
不能就酱紫沉了~
离线roywillow

只看该作者 3楼 发表于: 2012-05-14
回 2楼(hawkingyy) 的帖子
那个数组F……用的是什么编码?你有没有确认一下这个数组中的元素进入QTextStream会被怎么处理?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线hawkingyy
只看该作者 4楼 发表于: 2012-05-16
Re:回 2楼(hawkingyy) 的帖子
引用第3楼roywillow于2012-05-14 23:06发表的 回 2楼(hawkingyy) 的帖子 :
那个数组F……用的是什么编码?你有没有确认一下这个数组中的元素进入QTextStream会被怎么处理?



小白刚接触编程不久,见谅。
我感觉二维数组F就是二进制的编码啊,只有在QTextStream的时候才做了真正意义上的编码啊,没有搞懂QTextStream的处理方式,看不懂说明啊
离线jdwx

只看该作者 5楼 发表于: 2012-05-16
先把number变成QString
QString::number(123.123);
再看看效果。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 6楼 发表于: 2012-05-16
回 4楼(hawkingyy) 的帖子
不是这个意思
那个二位数组,如果是个int之类的类型,那么到QTextStream应该会输出成对应数字的QString吧
但是如果是char,那就不好说了……如果被当做字符而不是数字,那么每输入一个字符就会被编码一次,如果原来是一个字符串的话那就不知道被编码成什么样了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个