如何在 QString 文字中指定 utf-8 代码?
How to specify utf-8 code in QString literals?
QString s="hello";
s.replace("[=10=]xc2[=10=]xa0"," ");
qDebug()<<s;
在上面的代码中,我想将可能的不间断空格(0xc2a0)替换为" "
,但输出是
" h e l l o "
,为什么?最好不要使用其他函数将文字转换为 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("\x68\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64");
qDebug() << hello_world_normal;
edit.appendPlainText(hello_world_normal);
// UTF-8, non-breaking space (0xC2 0xA0)
QString hello_world_non_breaking("\x68\x65\x6c\x6c\x6f\xc2\xa0\x77\x6f\x72\x6c\x64");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
hello_world_non_breaking.replace(QString("\xc2\xa0"), " ");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
edit.show();
return a.exec();
}
QString s="hello";
s.replace("[=10=]xc2[=10=]xa0"," ");
qDebug()<<s;
在上面的代码中,我想将可能的不间断空格(0xc2a0)替换为" "
,但输出是
" h e l l o "
,为什么?最好不要使用其他函数将文字转换为 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("\x68\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64");
qDebug() << hello_world_normal;
edit.appendPlainText(hello_world_normal);
// UTF-8, non-breaking space (0xC2 0xA0)
QString hello_world_non_breaking("\x68\x65\x6c\x6c\x6f\xc2\xa0\x77\x6f\x72\x6c\x64");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
hello_world_non_breaking.replace(QString("\xc2\xa0"), " ");
qDebug() << hello_world_non_breaking;
edit.appendPlainText(hello_world_non_breaking);
edit.show();
return a.exec();
}