【问题标题】:Unicode into symbol C++Unicode 转换为符号 C++
【发布时间】:2025-12-31 10:40:12
【问题描述】:

我想将“U+XXXX”的 unicode 字符串 (unic) 转换为“\uxxxx”,以便打印符号,但出现以下错误:不完整的通用字符名称 \u|

我如何从一个字符串“U+xxxx”中创建一个有效的符号代码“\uxxxx”?

我的代码:

string unic = "U+xxxx";
unic.substr(2);
string symb="\u";
unic.insert(0, symb);
cout<<unic<<endl;

【问题讨论】:

  • 什么是unic
  • 你为什么不使用合适的 Unicode 库?
  • 编译器将字符串中的反斜杠解释为转义。我想你可能在这里指的是“\\u”。
  • 你知道 \uXXXX 符号只适用于字符串文字吗?您不能将这六个字符添加到 std::string 并期望 C++ 将其解释为单个 Unicode 字符。如果将六个字符添加到 C++ 字符串中,您只会得到六个字符。
  • 您似乎混淆了内部表示和外部表示。您的第一步应该是将 unicode 符号表示法解释为 32 位 Unicode 代码点。然后,您需要将该代码点编码为字节,以便在屏幕上打印它们。第一步可以使用 scanf 完成,例如,第二步是通过使用 std::wstream 并希望它适应您的语言环境,或者编码为 utf-8 并输出这些字节来完成。我相信你已经问过最后一部分的问题了。

标签: c++ unicode


【解决方案1】:

除了已经指出的反斜杠问题之外,您必须将unic.substr(2) 分配给变量,因为它不是破坏性操作:

string unic = "U+xxxx";
unic = unic.substr(2);
string symb="\\u";
unic.insert(0, symb);
cout<<unic<<endl;

【讨论】:

  • 谢谢,它成功了,但现在我有一个字符串 \u00D2 并且它只显示在控制台中,由于某种原因它不会将自身转换为 Ò 符号
  • @VisualNewbie • 您需要编写“从 \uXXXX 转换为 UTF-8”例程,因为您现在拥有的格式必须输出到文件中(格式为 source代码)并由 C++ 编译器编译。但是您也可以编写自己的“从 U+XXXX 转换为 UTF-8”例程。
最近更新 更多