关于loader加载Loader.JSON的一些问题

今天在处理本地JSON资源时,发现一个奇怪的问题:
Laya.loader.load(resUrl, Laya.Handler.create(this, function (res) {
//解析题目
log(res);
 
//放置方块
}), null, Laya.Loader.JSON);
}
 
代码运行到这老是报错,报错原因是有不认识的字符,我想了下,resUrl指向的是本地的一个JSON文本资源,JSON格式没问题,
然后我试了下使用TEXT方式来加载,这回能加载,但中文全是乱码!
大致原因我也猜到了:JSON资源的编码方式不对!
然后我确认了下JSON资源的编码方式:utf-8!
哎!心中一万个 xxxxx
想来想去,有一种可能:这Laya引擎将这JSON资源以非UTF-8的格式来解析了!
在使用Laya.loader.load的时候,没找到文本格式参数!这API设计的……
好吧,没办法,看看源码中是否有什么蛛丝马迹可寻!直接从源码中去找,不是很明智,换个思路:DEBUG追踪到源码中:
1、在上述代码前面打个断点
2、刷新下页面
3、代码运行到断点处停下来,一步一步追踪
这里有个小提示:DEBUG追踪源码时,在index.html中,就不要使用min版本的源码了
最后追到了一个很有意思的地方:
MiniAdpter.getUrlEncode
就是这个函数,来确认文本字符格式,当我看到函数体时,惊呆了!!!原谅我孤陋寡闻!!!
MiniAdpter.getUrlEncode=function(url,type){
    if(url.indexOf(".fnt")!=-1)
        return "utf8";
    else if(type=="arraybuffer")
        return "";
    return "ascii";
}
感情你是这样来判断文本字符的编码格式啊!!!怪不得解析老出错:原来默认是以ascii编码格式来解析,不出错才怪!!!
其实改起来也非常简单:将待解析的文件名中,加入.fnt即可,即文件后缀从原来的.json改成.fnt.json
呵呵,呵呵呵,……
 
已邀请:

要回复问题请先

商务合作
商务合作