欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity LitJson 修改源码直接显示中文

程序员文章站 2024-01-20 12:56:58
...

前言

用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码Unity LitJson 修改源码直接显示中文

修改后打印

中文
Unity LitJson 修改源码直接显示中文

修改代码步骤

找到ToJson方法

Unity LitJson 修改源码直接显示中文

找到WriteValue方法

Unity LitJson 修改源码直接显示中文

找到Write方法

Unity LitJson 修改源码直接显示中文

找到PutString方法

Unity LitJson 修改源码直接显示中文

修改代码

将下面方法替换即可

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 ('"');
        }

其他影响

不同环境下请谨慎使用。

相关标签: Unity