如何在QString文本中指定utf-8代码


QString s="hello";
s.replace("xc2xa0"," ");
qDebug()<<s;

在上面的代码中,我想将可能的非中断空格(0xc2a0(替换为"&nbsp;",但输出是

"&nbsp;h&nbsp;e&nbsp;l&nbsp;l&nbsp;o&nbsp;"

,为什么?最好不要使用其他函数将文字转换为UFT-8。

#include "MainWin.h"
#include <QtWidgets/QApplication>
#include <QPlainTextEdit>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPlainTextEdit edit;
// "hello world" string from UTF-8 hexadecimal representation
// UTF-8, normal space (0x20)
QString hello_world_normal("x68x65x6cx6cx6fx20x77x6fx72x6cx64");
qDebug() << hello_world_normal;
edit.appendPlainText(hello_world_normal);
// UTF-8, non-breaking space (0xC2 0xA0)
QString hello_world_non_breaking("x68x65x6cx6cx6fxc2xa0x77x6fx72x6cx64");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
hello_world_non_breaking.replace(QString("xc2xa0"), "&nbsp;");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
edit.show();
return a.exec();
}

相关内容

  • 没有找到相关文章

最新更新