gpt4 book ai didi

c++ - 当从 html 文件中读取 Unicode 内容时,为什么 Unicode 字体无法在 QTextBrowser 中正确显示?

转载 作者:行者123 更新时间:2023-11-30 05:47:47 25 4
gpt4 key购买 nike

我正在阅读一个 html 文件。该文件主要包含如下 Unicode 文本:

<b>akko- sati (ā + kruś), akkhāti (ā + khyā), abbahati (ā + bṛh)</b>

但是 QTextBrowser 不解释 Unicode 字体。所以 QTextBrowser 将它们显示如下:

akko- sati (Ä + kruÅ›), akkhÄti (Ä + khyÄ), abbahati (Ä + bá¹›h)

QTextBrowser 正确解释了 html 标签。但是 Unicode 字体有什么问题呢?

以下是我读取和填充 Unicode 内容的代码:

void MainWindow::populateTextBrowser(const QModelIndex &index)
{
QFile file("Data\\" + index.data().toString() + ".html");
if (!file.open(QFile::ReadOnly | QFile::Text)) {
statusBar()->showMessage("Cannot open file: " + file.fileName());
}
QTextStream textStream1(&file);

QString string = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><link rel='stylesheet' type='text/css' href='Data/Accessories/qss.css' />";
string += textStream1.readAll();

ui->textBrowser->setHtml(string);
}

但是,如果我不从 html 文件中读取 Unicode 内容,而是直接将它们输入到参数中,那么它只会解释 Unicode 字体。例如,如果我这样做就可以了:

ui->textBrowser->setHtml("<b>akko- sati (ā + kruś), akkhāti (ā + khyā), abbahati (ā + bṛh)</b>");

如何从 html 文件中读取 Unicode 内容并在 QTextBrowser 中显示它们?

如果有人向我展示代码中有问题的部分或告诉我解决问题的更好方法,我将非常感激。

最佳答案

您将二进制文件读入 QString 但不告诉程序哪些字节对应于哪个 unicode 字符,即您没有指定“编码”又名。 “编解码器”。

要调试您的问题,请询问 QTextStream 它默认使用哪些代码:

QTextStream textStream1(&file);
qDebug() << textStream1.codec()->name();

在我的 Linux 系统上,它已经是“UTF-8”,但在您的系统上可能有所不同。要强制 QTextStream 将输入解释为 UTF-8,请使用 QTextStream::setCodec .

关于c++ - 当从 html 文件中读取 Unicode 内容时,为什么 Unicode 字体无法在 QTextBrowser 中正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com