• 13493阅读
  • 8回复

[提问]QTextEdit显示中文乱码 [复制链接]

上一主题 下一主题
离线txwhhny
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-16
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —

代码清单如下:
  1. QFile inputFile(tr(":/input.txt"));
  2. inputFile.open(QIODevice::ReadOnly);
  3. QTextStream in(&inputFile);
  4. QString line = in.readAll();
  5. inputFile.close();
  6. // QString info = tr("中文");
  7. //ui->textEdit->setPlainText(info);
  8. ui->textEdit->setPlainText(tr(line.toStdString().c_str()));

我从input.txt(utf-8编码)文件中读取内容,如果直接ui->textEdit->setPlainText(line);就会出现乱码,而上面的info="中文"的话也会乱码,加了tr就不会。ui->textEdit->setPlainText(tr(line.toStdString().c_str()));也不会乱码,但是这么写是不是太麻烦了,请问,有什么简单一点的写法吗,起码不需要这么多步骤的。谢谢

离线roywillow

只看该作者 1楼 发表于: 2011-11-16
永远记住一点
想省事就别在代码中用中文

如果你确定那个txt就是utf8的话强制给textstream设置编码试试呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ninsun

只看该作者 2楼 发表于: 2011-11-17
用tr的话,里面还是不要用中文了……
要用中文试试QString::fromLocal8Bit("中文中文");
或者QString::fromUtf8(in.readAll());
离线zhy282289
只看该作者 3楼 发表于: 2011-11-17
多看点QT编码问题,看多了也就那样
为什么我脸这么胖~
离线largep
只看该作者 4楼 发表于: 2011-11-20
文件读入的时候,如果能确认文件的编码方式可以指定codec
离线kaily
只看该作者 5楼 发表于: 2011-11-21
在main()中加入下面这行代码:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
离线jorneyr

只看该作者 6楼 发表于: 2011-11-21
void UiUtil::enableUtf8() {
    QTextCodec *codec = QTextCodec::codecForName("UTF8");
    if (codec) {
        QTextCodec::setCodecForTr(codec);
        QTextCodec::setCodecForLocale(codec);
        QTextCodec::setCodecForCStrings(codec);
    }
}
离线jorneyr

只看该作者 7楼 发表于: 2011-11-21
main函数中使用上面的代码,让Qt程序默认使用UTF-8编码显示字符,“想省事就别在代码中使用中文“,不占同这一点,呵呵
离线dbzhang800

只看该作者 8楼 发表于: 2011-11-21
引用第7楼jorneyr于2011-11-21 10:53发表的  :
main函数中使用上面的代码,让Qt程序默认使用UTF-8编码显示字符,“想省事就别在代码中使用中文“,不占同这一点,呵呵

呵呵,不管你赞同还是不赞同,5楼和6楼的setCodecForXXX
的用法都存在多种问题!!也可以说用法错误(或者说只在某种特定情况下工作)
快速回复
限100 字节
 
上一个 下一个