FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Jsonの書き出し読み込みの時の文字コード 

    こんにちは。
    大坂です。

    Jsonファイルの書き出し読み込みの時の文字コードで少しはまったのでメモがてら。
    もともとあるJsonファイルを書き出して、読み込みなおしたときの話。

    コード。書き出しと、読み込み部分のみ。

    public static string ReadSaveFile(string fileName)
    {
    string file = Application.persistentDataPath + "/" + fileName;
    Encoding encoding = Encoding.UTF8;
    using (StreamReader sr = new StreamReader(file, encoding))
    {
    return sr.ReadToEnd();
    }
    }

    public static void WriteSaveFile(string fileName, string data)
    {
    string file = Application.persistentDataPath + "/" + fileName;
    Encoding encoding = Encoding.UTF8;
    using (StreamWriter sw = new StreamWriter(file, false, encoding))
    {
    sw.Write(data);
    }
    }

    読み込み後のJsonへの変換がうまくいかない。
    Jsonファイルをいくら比較してみても違いが判らなかったのですが、元ファイルの文字コードと書き出し後の新ファイルの文字コードを確認すると
    元ファイル:Shift_JIS
    新ファイル:UTF-8(BOM付き)

    ふむ。まぁ日本語もないしShift_JISでいいかとEncodingをShift_JISに変更

    Encoding部分のみ以下に変更

    Encoding encoding = Encoding.GetEncoding("Shift_JIS");


    これでUnity上ではうまくいったのでよかったと思って、しばらくして実機で動かしたら動かない。
    System.Text.Encoding で Shift JIS を使いたいで解決もできますが、
    なんとなくでUTF-8(BOMなし)にしたらいいじゃないかと思ったので、とりあえずやってみた。

    Encoding部分のみ以下に変更

    Encoding encoding = new UTF8Encoding(false);


    これでUnity上でも実機でも動くようになりました。
    プロジェクトにもよると思いますが、自分で書きだしたJsonを読み込んだときにうまく変換できないときは、文字コードも確認してみるといいかもしれませんね。

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/905-e5339a62
    この記事にトラックバックする(FC2ブログユーザー)