Unity/C#で XMLファイルとしてデータを保存する(UTF-8/日本語対応)
こちらの記事で、Unityで簡単にXMLでのファイル読み書きができる方法を見たのですが UTF-8に対応していないため、日本語が保存できませんでした。
<?xml version="1.0" encoding="us-ascii"?> ・・・
こんな感じでus-asciiになってしまうので、UTF−8で日本語が利用できるように書き換えました。
- XmlUtil.cs
using System.IO; using System.Xml; using System.Xml.Serialization; public class XmlUtil { // シリアライズ public static T Seialize<T>(string filename, T data) { using ( var stream = new FileStream(filename, FileMode.Create) ) { var serializer = new XmlSerializer(typeof(T)); var streamWriter = new StreamWriter(stream, System.Text.Encoding.UTF8);//追加 serializer.Serialize(streamWriter, data);//変更 } return data; } // デシリアライズ public static T Deserialize<T>(string filename) { using ( var stream = new FileStream(filename, FileMode.Open) ) { var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(stream); } } }
こうなります。
<?xml version="1.0" encoding="utf-8"?> ・・・
PlayerPrefsに履歴とか、セーブデータとか構造データを保存するとき便利です。
デバイスごとのXMLファイルの保存場所はここが参考になりました。