boost :: property_tree :: read_jsonで問題を解決できません。 MBCSエンコーディング(マルチバイト文字セット)のMFCプロジェクトがあります。 ä
文字でデータを読み取っているときにエラーが発生します。これは私の例である:ブーストread_jsonでウムラウトを読み取れません
namespace pt = boost::property_tree;
pt::ptree rootRequest;
//Save data in property tree
rootRequest.put("test", "Test ä");
//create stringstream
std::stringstream ss;
//Write rootRequest to stringstream
try
{
pt::write_json(ss, rootRequest);
}
catch (std::exception const &e)
{
TRACE("Error: [%s]\n", e.what());
}
//Get string from stringstream
std::string strRequest = ss.str();
TRACE("data: [%s]\n", CString(strRequest.c_str()));
//Clear stringstream
ss.str(std::string());
//Sate data to stringstream
ss << strRequest;
//Save string data in ptree value
pt::ptree rootResponse;
try
{
pt::read_json(ss, rootResponse); //Here I'm getting error
}
catch (std::exception const &e)
{
TRACE("Error: [%s]\n", e.what());
}
私は次の例外を取得しています:
<unspecified file>(2): invalid code sequence
そのようなデータを読み込むための適切な方法はどれ?誰かが私にこれを手伝ってくれることを願っています。 string
にデータを保存してからこれをもう一度stringstream
に読み込む必要があります。この部分は変更できません。
MBCSエンコードを使用しないでください。新しいプロジェクトにUNICODEを使用すると、MBCSはWindowsのネイティブ文字列形式をUNICODEに変更して以来MBCSは死亡しています。 –
できません。メンテナンスプロジェクトがあり、エンコーディングは変更できません。 – drewpol
JSONは生のMBCSを処理できません。すべての文字列をUTF-8に変換する必要があります。 –