C++でjsonファイルを読み込んでJSONデータを扱いと思い、ネット上で評判が良かったnlohmannのライブラリを使用してみました。
(URF-8形式で保存されている)jsonファイルからファイルを読み込んで、そのファイル内のJSONデータをパースすることは出来たのですが、データ内の日本語の文字列が文字化けしていました。
色々と試行錯誤した所、その文字化けしたデータをUTF-16形式に変換した所、無事に正しい文字列を取得することが出来ました。
ただUTF-16形式の文字列はu16string型に格納しないといけないらしく、最終的にはstring型(UTF-8)に文字列を格納したいのですが、u16string型をstring型にネットで調べて変換しても、元の文字化けした文字列に戻ってしまいます。
他にやり方を色々調べてもやり方が分かりませんでした。
そもそもなぜJSONの日本語文字列をUTF-16形式に変換しないといけないのか。
ネットでは『JSONはUTF-8のデータだからUTF-16に変換しないといけない』みたいな情報があり、実際にそれを参考にして変換する関数を(コピペして)作り変換してu16string型に格納したのですが、そもそもUTF-8のデータであるのならUTF-8の型であるstring型になぜ正しく格納できないのでしょうか、と疑問に思います。
教えて貰いたいのは、
u16string型から文字化けをせずにstring型に変換するやり方、
もしくは最初からJSONデータを文字化けせずに直接string型に格納するやり方があれば教えて頂きたいです。
以上、よろしくお願いいたします。
開発環境
Visual studio 2019(最新版)
回答1件
あなたの回答
tips
プレビュー