• 6146阅读
  • 4回复

[提问]为什么用utf-16保存的文件无法正常显示汉字? [复制链接]

上一主题 下一主题
离线lndt
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-16
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
下面是代码

   #define CODEC "utf-16be"
    QFile file("abc.txt");
    file.open(QIODevice::WriteOnly);
    QTextStream ts(&file);
    ts.setCodec(CODEC);
    ts.setGenerateByteOrderMark(true);
    QTextCodec::setCodecForTr(QTextCodec::codecForName(CODEC));
    ts<<tr("汉字");

    平台是ubuntu,
    查看 abc.txt是乱码, 我试了 vi,  firefox, windows下的notepad都是乱码
    用16进制查看文件,的确也在文件头位置写了 fe ff

    但是改成utf-8就没问题了.请问咋回事?


   


[ 此帖被lndt在2010-09-16 12:55重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-16
看这个吧 http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html

在你写  "汉字" 时就已经埋下隐患了。
离线lndt
只看该作者 2楼 发表于: 2010-09-16
更正一下,代码里的"汉字",应该是tr("汉字") ,
但是还是不行
离线dbzhang800

只看该作者 3楼 发表于: 2010-09-16
引用第2楼lndt于2010-09-16 13:04发表的  :
更正一下,代码里的"汉字",应该是tr("汉字") ,
但是还是不行


恩,这样就和你的 setCodecForTr 对应上了。不然你的utf8也是错的。

不过你还是应该好好看看那片文章。里面介绍的 setCodecForCStrings,只要你理解的一个,另一个也就明白了。
离线lndt
只看该作者 4楼 发表于: 2010-09-16
非常感谢!
快速回复
限100 字节
 
上一个 下一个