我的php界面在添加东西时添加界面不能正常添加,据估计可能与json不能在GB2312编码格式上运行有关。
求高手这个怎么解决,下面是json部分的代码,除了这个地方还需要改哪些地方?js文件?
public function get_json_roles()
{
$roles = $this->db->get("role")->result();
/*
role = [
{
id : 0,
name : '角色名',
resources :[
{
name:'bxsheet',
chinesename:'报修单'
}
]
}
];
*/
$json_roles = "roles = [";  foreach($roles as $role)
{
$json_roles  .= "{id:$role->id,name:'$role->name',resources :[{name:'welcome',chinesename:'欢迎界面'},"; $sql = "SELECT res.id as id,res.name as name,res.chinesename AS chinesename FROM permission p 
LEFT JOIN resource res ON p.resource_id = res.id
LEFT JOIN role r ON p.role_id = r.id
WHERE p.actionname = 'index' and  r.id=" . $role->id;

$results = $this->db->query($sql)->result();

foreach($results as $result)
{
$json_roles .= "{name:'$result->name',chinesename:'$result->chinesename'},"; 
}
$json_roles = trim($json_roles,",")."]";  
$json_roles .= "},";
}

$json_roles = trim($json_roles,",")."];";

return $json_roles; 
}JSON界面编码

解决方案 »

  1.   

    我的做法是所以设计到中文字符的,都用mb_convert_encoding转一下编码?
      

  2.   

    1、你的 json 是自己生成的,不存在编码支持问题
      只有 php 的 json_encode、json_decode 才只认 utf-8 编码
    2、既然你的程序是 gbk 的,那么就该有字符集声明
    header('Content-type: text/html;charset=GBK');
      

  3.   

    JSON 需要在UTF8编码下运行,GB格式下无法运行,如需在GB下运行,需要先进行转码成UTF8编码,在获取到解码数据的时候 再转码回GB编码即可