从文件中的字符串转换QString

时间:2015-04-28 07:06:36

标签: c++ qt

我想在QString中设置文字,因此我需要使用QString::fromUtf8()。 但我读了一个文件,文字中包含重音符号。 我试过string line; QString lineTranslate; getline(file, line); lineTranslate = QString::fromStdString(line); m_nomCourant->setText(QString::fromLatin1("<u><strong>Nom courant :</strong></u> ") + lineTranslate); ,但它没有用。

有什么想法吗?

Nom courant : Requin
Nom scientifique : Carcharhinus menalopterus

Habitat : Côtier / Dans les zones coralliennes jusqu'à -30m
Famille : Carcharhinidés

期望的输出:

Nom courant : Requin
Nom scientifique : Carcharhinus menalopterus

Habitat : C?tier / Dans les zones coralliennes jusqu'? -30m
Famille : Carcharhinid?s

实际输出:

QString

编辑:你建议我用什么来def find_neighours(index, x_size, y_size): neighbours = [] x1, y1, = index for x_move in (-1, 0, 1): for y_move in (-1, 0, 1): if x_move == 0 and y_move == 0: continue x2, y2 = x1 + x_move, y1 + y_move if x2 < 0 or x2 >= x_size: continue if y2 < 0 or y2 >= y_size: continue neighbours.append((x2, y2)) return neighbours 多行?

1 个答案:

答案 0 :(得分:3)

您需要知道文件中使用的是什么编码(charset)。然后,您将使用fromUtf8或其他内容 - 使用QTextCodec

来自Qt docs的示例:

QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
QTextDecoder *decoder = codec->makeDecoder();

QString string;
while (new_data_available()) {
    QByteArray chunk = get_new_data();
    string += decoder->toUnicode(chunk);
}
delete decoder;