我正在尝试打印出来自curl查询(UTF-8字符集)的答案,在执行查询后,我使用以下代码创建一个字符串:
size_t writeToString(char* ptr, size_t size, size_t nmemb, std::string* stringPtr) {
stringPtr->append(ptr, nmemb*size);
return size*nmemb;
}
在执行字符串的cout
时,Unicode字符将显示为其代码(例如\ u0434)。我已经尝试将命令提示符的代码页更改为65001.是否可以在Windows命令提示符下打印出UTF-8卷曲响应?
答案 0 :(得分:0)
你有没有尝试在cout之前将它存储在 std :: wstring (而不是std :: string)中?
这个问题可能有所帮助: UTF8 to/from wide char conversion in STL
答案 1 :(得分:0)
尝试拨打SetConsoleOutputCP(65001)
,然后使用WriteConsole()
或WriteConsoleOutput()
代替std::cout
。
否则,将UTF-8数据解码为UTF-16,然后使用std::cout
将其转换为Ansi。