假设我有一个文本“Բարև Hello Здравствуй”。 (我将此代码保存在 QString 中,但如果您知道将这些文本存储在 C++ 代码中的其他方法,欢迎使用。)如何将此文本转换为 Unicode 转义,例如“\u1330\u1377\u1408\u1415 Hello\u1047\u1076\u1088\u1072\u1074\u1089\u1090\u1074\u1091\u1081"(参见 here )?
最佳答案
#include <cstdio>
#include <QtCore/QString>
#include <QtCore/QTextStream>
int main() {
QString str = QString::fromWCharArray(L"Բարև Hello Здравствуй");
QString escaped;
escaped.reserve(6 * str.size());
for (QString::const_iterator it = str.begin(); it != str.end(); ++it) {
QChar ch = *it;
ushort code = ch.unicode();
if (code < 0x80) {
escaped += ch;
} else {
escaped += "\\u";
escaped += QString::number(code, 16).rightJustified(4, '0');
}
}
QTextStream stream(stdout);
stream << escaped << '\n';
}
请注意,这会遍历 UTF-16 代码单元,而不是实际的代码点。
关于c++ - 如何将 unicode 字符串转换为其 unicode 转义符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3211214/