如何在c/c+中将JSON文件转换为UTF-8格式+;? 我能用C++生成一个JSON文件,用我的文件生成正确格式(不管文件是什么)。由于我对编码/解码很陌生,所以在这个例子中没有太多的相关概念。我可以用这种方法把这个JSON文件转换成C或C++中的UTF-8格式。 < >我可以用这个方法把这个JSON文件转换成UTF-8格式的C或C++。

如何在c/c+中将JSON文件转换为UTF-8格式+;? 我能用C++生成一个JSON文件,用我的文件生成正确格式(不管文件是什么)。由于我对编码/解码很陌生,所以在这个例子中没有太多的相关概念。我可以用这种方法把这个JSON文件转换成C或C++中的UTF-8格式。 < >我可以用这个方法把这个JSON文件转换成UTF-8格式的C或C++。,c++,c,json,C++,C,Json,如果您有unicode格式的json文本,您并没有说明要转换的编码是什么,下面的示例演示了如何将其转换为utf-8 #include <string> #include <locale> #include <codecvt> #include <iostream> #include <iomanip> int main() { // On input in unicode std::wstring uStr = L"\u0

如果您有unicode格式的json文本,您并没有说明要转换的编码是什么,下面的示例演示了如何将其转换为utf-8

#include <string>
#include <locale>
#include <codecvt>
#include <iostream>
#include <iomanip>

int main()
{
   // On input in unicode
   std::wstring uStr = L"\u0105"; // polish a with ogonek

   // Convert uStr to utf-8
   std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> convert;
   std::string result = convert.to_bytes(uStr);

   // Output result,
   // U+0105 is converted to : U+00c4, U+0085,
   std::cout << "U+" << std::hex << std::setw(4) << std::setfill('0') << uStr[0] << std::endl;
   for ( char c : result ) {
    unsigned char uc = static_cast<unsigned char>(c);
    std::cout << "U+" << std::hex << std::setw(4) << std::setfill('0') <<  static_cast<int>(uc) << ", ";
   }
}
#包括
#包括
#包括
#包括
#包括
int main()
{
//关于unicode输入
std::wstring uStr=L“\u0105”//用ogonek抛光a
//将uStr转换为utf-8
std::wstring_convert;
std::string result=convert.to_字节(uStr);
//输出结果,
//U+0105转换为:U+00c4,U+0085,

std::cout一个简单的ASCII文本文件也是一个有效的UTF-8文件,因此您需要说明为什么您的文件不是UTF-8。否则,就没有什么可转换的。我相信JSON是基于UTF-8的,所以任何有效的JSON也是有效的UTF-8。不过,请检查相应的标准。也就是说,不清楚您的问题到底是什么。@user3386109我的文件不是UTF-8因为:我使用cout我想如果你在Windows上,那可能是个问题。如果你用十六进制编辑器打开该文件,你会看到什么?IETF RFC 7159标题JavaScript对象表示法(JSON)数据交换格式说
JSON文本应以UTF-8、UTF-16或UTF-32编码。
我想将默认文本转换为UTF-8。(说出任何JSON数据)@BharatJain如果您有默认文本(即仅ASCII字符),则无需转换-它已在UTF-8中。您必须定义默认文本的含义。@BharatJain若要了解JSON的编码方式,您必须查看API规范(可能您从某些web服务获得该JSON?)例如,您可能会看到,有一段代码将员工的名字从数据库中放入json,这样的文本肯定会包含各种非ASCII的unicode字符。