Unity LitJson 修改源码直接显示中文
程序员文章站
2024-01-20 12:56:58
...
Unity LitJson 修改源码直接显示中文
前言
用Unity直接读写Json文件的时候发现我下的 LitJson源码并不支持直接显示中文,显示的是Unicode码,导致打Log的时候不清楚具体内容,在网上找到一种可以直接修改源码显示中文的方法,记录下来。
参考:OiSoft_XM 关于LitJson中文的问题
下载安装LitJson
从这里下载LitJson源码
直接拖入Unity即可
输出代码
TestProto proto = new TestProto();
proto.Id = 1;
proto.Name = "测试";
proto.Type = 0;
proto.Price = 99.5d;
string json= JsonMapper.ToJson(proto);
Debug.Log(json);
修改前打印
Unicode码
修改后打印
中文
修改代码步骤
找到ToJson方法
找到WriteValue方法
找到Write方法
找到PutString方法
修改代码
将下面方法替换即可
private void PutString (string str)
{
Put (String.Empty);
writer.Write ('"');
#region 不转码直接显示原语言
writer.Write(str);
#endregion
#region 转码(默认)
//int n = str.Length;
//for (int i = 0; i < n; i++)
//{
// switch (str[i])
// {
// case '\n':
// writer.Write("\\n");
// continue;
// case '\r':
// writer.Write("\\r");
// continue;
// case '\t':
// writer.Write("\\t");
// continue;
// case '"':
// case '\\':
// writer.Write('\\');
// writer.Write(str[i]);
// continue;
// case '\f':
// writer.Write("\\f");
// continue;
// case '\b':
// writer.Write("\\b");
// continue;
// }
// if ((int)str[i] >= 32 && (int)str[i] <= 126)
// {
// writer.Write(str[i]);
// continue;
// }
// // Default, turn into a \uXXXX sequence
// IntToHex((int)str[i], hex_seq);
// writer.Write("\\u");
// writer.Write(hex_seq);
//}
#endregion
writer.Write ('"');
}
其他影响
不同环境下请谨慎使用。