unity读取json文件乱码以及Invalid character 'v' in input string异常解决方案

先说PC端吧,PC端乱码很容易解决

itemsTable = JsonMapper.ToObject(
File.ReadAllText(Application.dataPath + "/Scripts/Json/itemsTable.json", Encoding.GetEncoding("utf-8")));//读取物品表

在JsonMapper.ToObject的第二个参数写上编码格式就行了,

注意,下文中的utf-8编码就是windows系统记事本本的utf-8编码,而其实际上是utf-8 with bom编码.

参数里写GB2312的话在pc上可以读取UTF-8(utf-8 with bom)编码的json,但却不能读取utf-8 无Bom编码的json,如果读取utf-8 无 bom编码的json的话就会报

类似sonException: Invalid character 'v' in input string这种异常

而写utf-8两个都能读取.



而安卓上用www读取json文件的话就只能读取utf-8 无 bom编码的文件了.

而在记事本中保存为json则是保存为utf-8 with bom格式保存.如果你是用记事本保存的json然后又使用www读取的话就会出现

JsonException: Invalid character 'v' in input string这种异常,有也可能是'd',' ',等字符错误



所以解决方案是用notepad++将编码改为utf-8 无 BOM,pc端读取json用

Encoding.GetEncoding("utf-8")
读取,安卓用www类读取,这样pc和安卓都能读取.


一下是安卓的读取json.

这里采用最简单的StreamingAssets路径来读取Json.

void Awake()
{
StartCoroutine(LoadJson());
}
 IEnumerator LoadJson()
    {
        string sPath = Application.streamingAssetsPath + "/Json/itemsTable.json";
        WWW www = new WWW(sPath);
        itemTableStr = www.text;       
        Debug.Log(itemTableStr);
        yield return www;
       
    }
具体原理



感谢这位大佬大哭

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值