假设我有一个文本“Բարև 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/

10-13 08:22