[]微信小游戏,又是json编码的问题

微信小游戏加载json,之前我已经把json改成用uft8格式加载了,但是当加载用layaide图集打包工具生成的json时,还是会报错
用ue、notepad++和记事本看那个json文件,都显示utf-8格式
最后发现在微信小游戏里它最后读取到的json字符串有问题,开头多了一个看不见的字符
然后我改了下MiniLoader里的代码就可以了
public static function getJson(data:String):Object {
                data = data.replace(/[\ufeff]/, "");//替换一个看不见的特殊字符
                return JSON.parse(data);
        }
但是这个方法也只是暂时的,这个也不知道是引擎的bug还是微信的bug
已邀请:

layabox

赞同来自: vvv123

由于小游戏里读本地资源会校验编码,而项目里绝大多数非图片文件的编码为ASCII,所以引擎调用本地接口读取文件时,默认传参会告诉小游戏编码格式为ASCII码,当本地初始包的文件(比如json文件)的编码格式不是ASCII,那就会报错。所以,开发者需要去检查文件的编码,然后通过“MiniAdpter['getUrlEncode']”告诉小游戏该文件真正的编码是什么,这样小游戏按照正确的编码去校验就不会出错了。
//告诉小游戏你的文件编码是什么
MiniAdpter['getUrlEncode'] = getUrlAndEncode;//假如getUrlAndEncode是开发者识别文件编码的方法


开发者识别文件编码的方法示例(AS3版):
//该方法示例仅做参考,视项目情况自行修改或拓展
public static var getUrlAndEncode:Function = function(url:String,type:String):String
{
if (url.indexOf(".fnt") != -1 || url.indexOf("xxx.json") != -1)
{
return "utf8";
} else if (type == "arraybuffer")
{
return "";
}
return "ascii";
}


 

qian

赞同来自:

你直接改这个地方

微信图片_20180103192743.jpg


 

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作