如何在Qt中为QTextBrowser设置字符编码?
How to set character encoding for QTextBrowser in Qt?
我有一个 QTextBrowser
,其中我使用 Linux 中的 QProcess
显示外部二进制文件的输出内容。一切都很好!但是大部分内容只是盒子,所以现在它的字符编码 UTF-8 丢失了,我需要告诉 QTextBrowser
。有什么办法吗?
代码:
....
processRAM = new QProcess();
processRAM->start("memtester", QStringList() << "1" << "1");
.....
connect(processRAM, SIGNAL(readyRead()),this,SLOT(displayRAMTestOutput()));
......
void MainWindow::displayRAMTestOutput()
{
textBrowserData->append(Qtring::fromUtf8(processRAM->readAllStandardOutput())));
}
我添加了字符编码 UTF-8,但我仍然只看到框。我在这里错过了什么?
可以这样设置QTextBrowser
的内容:
textBrowser->setText(QString::fromUtf8(processOutput)));
编辑:
"boxes" 的问题与 UTF8 编码无关。您看到的符号是 memtester 在向控制台显示文本时使用的控制字符。如果不想在textBrowser
中显示这样的字符,可以过滤输出:
while(!processRAM->atEnd())
{
QString out = QString::fromAscii(processRAM->readLine());
if(!out.contains("\b"))
textBrowser->append(out);}
}
\b
表示退格,在您的文本浏览器中显示为框。
我有一个 QTextBrowser
,其中我使用 Linux 中的 QProcess
显示外部二进制文件的输出内容。一切都很好!但是大部分内容只是盒子,所以现在它的字符编码 UTF-8 丢失了,我需要告诉 QTextBrowser
。有什么办法吗?
代码:
....
processRAM = new QProcess();
processRAM->start("memtester", QStringList() << "1" << "1");
.....
connect(processRAM, SIGNAL(readyRead()),this,SLOT(displayRAMTestOutput()));
......
void MainWindow::displayRAMTestOutput()
{
textBrowserData->append(Qtring::fromUtf8(processRAM->readAllStandardOutput())));
}
我添加了字符编码 UTF-8,但我仍然只看到框。我在这里错过了什么?
可以这样设置QTextBrowser
的内容:
textBrowser->setText(QString::fromUtf8(processOutput)));
编辑:
"boxes" 的问题与 UTF8 编码无关。您看到的符号是 memtester 在向控制台显示文本时使用的控制字符。如果不想在textBrowser
中显示这样的字符,可以过滤输出:
while(!processRAM->atEnd())
{
QString out = QString::fromAscii(processRAM->readLine());
if(!out.contains("\b"))
textBrowser->append(out);}
}
\b
表示退格,在您的文本浏览器中显示为框。