【发布时间】:2018-07-13 08:52:33
【问题描述】:
我正在尝试输出一个包含 unicode 字符的字符串,该字符串是通过 curl 调用接收的。因此,我正在寻找类似于 u8 和 L 的文字字符串选项,但不适用于变量。例如:
const char *s = u8"\u0444";
但是,由于我有一个包含 unicode 字符的字符串,例如:
mit freundlichen Grüßen
当我想打印这个字符串时:
cout << UnicodeString << endl;
它输出:
mit freundlichen Gr??en
当我使用wcout 时,它返回给我:
mit freundlichen Gren
我做错了什么以及如何获得正确的输出。我用RapidJSON返回输出,它返回字符串为:
mit freundlichen Gr��en
需要注意的是,该应用程序是在 Ubuntu 上运行的 CGI,响应浏览器请求
【问题讨论】:
-
std::wcout,尽管这可能只会让编码难题更进一步。 -
@Bathsheba,我已经尝试过使用 wcout,结果是:
mit freundlichen Gren -
您需要将字符串从其当前编码(可能是UTF-8)转换为您的输出设备支持的编码(不知道那是什么)。没有快速的解决方案,你必须做一些工作。
-
@john,我的输出设备与请求的接收者一样吗?我猜它实际上也是 UTF8..?
-
@ThomasvanHesteren 打印出您的字符串的字节值,并将它们张贴在这里。这将告诉您的字符串使用什么编码。如果您的输出设备支持 UTF-8 并且您看到 ??在那种表明你的字符串不是 UTF-8 的输出中。 Somhow 需要进行某种转换,首要任务是弄清楚那是什么。
标签: c++ unicode unicode-string