JSON

Unity3D的Json里传中文的解决办法

字号+ 作者:H5之家 来源:H5之家 2015-10-06 19:34 我要评论( )

Unity3D的Json里传中文的解决办法。如果传过来的数据中带中文,执行到var jsonObj1=eval_r(getwww.data);,这一步的时候就会出错。原因是unity3d不支持\u转义,

Unity3D的Json里传中文的解决办法。如果传过来的数据中带中文,执行到var jsonObj1=eval_r(get);,这一步的时候就会出错。原因是unity3d不支持\u转义,而json_encode函数在encode的时候就直接把中文变成了\?这种形式。

其实很好解决,echo之前先把转义的字符串变成中文就行了。Unity3D不是浏览器,应该调用WWW的时候直接读的二进制数据,所以不会出错。

php代码:

<?php
$arr=array(
'username' => '测试',
'password' => 'bar'
);
echojs_(json_encode($arr));
function js_($str)
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
if ($str[$i] == '\\' && $str[$i+1] == 'u')
{
$val = hexdec(s str($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else $ret .= $str[$i];
}
return $ret;
}
?>

Unity JS代码:

var jsonURL="http://localhost/json/demo.php";
var show;
var chineseSkin : GUISkin;
function Start(){
//获取json数据的方法
var getwww : WWW = new WWW (jsonURL);
yield getwww;
print (get);
var jsonObj1=eval_r(get);
print (jsonObj1["username"]);
show=jsonObj1["username"];
}
function OnGUI(){
GUI.skin=chineseSkin;
GUI.Button(Rect(10,10,100,20),show);
}

需要字体才能显示出中文。另外注意.php文件的编码要设置成utf-8,=的js文件编码最好也设置成utf8。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评
<