使用c ++和qt时重音问题

时间:2013-03-20 17:51:04

标签: qt text character-encoding utf

我正在用西班牙语写一个程序。我想告诉用户已经加载了一个文件。用西班牙语:

ui->teLog->append("Se cargó el archivo: " + filename);

然而西班牙语部分输出为:

  

Secargóelarchivo:

我知道问题是编码(就像我需要告诉程序这是UTF8,我想)。 反正有吗?

2 个答案:

答案 0 :(得分:4)

普通的QString构造函数假定您正在编写ASCII字符。如果您在这种情况下使用QString::fromUtf8(),则应该有效:

ui->teLog->append(QString::fromUtf8("Se cargó el archivo: ") + filename);

此外:

QTextCodec::setCodecForCStrings( QTextCodec::codecForName("utf8") );

(有关详细信息,请参阅this answer

答案 1 :(得分:2)

考虑使用latin1语言以简明英语编写所有消息,并使用Qt翻译功能将消息转换为西班牙语。请参阅http://qt-project.org/doc/qt-4.8/qobject.html#trhttp://qt-project.org/doc/qt-4.8/linguist-translators.html

这有几个好处:

  • 您的程序可以翻译成其他语言
  • 非西班牙 开发人员将能够更轻松地修改您的代码(假设 每个开发人员都懂英语,只有一些人知道西班牙语。