0

我创建了一个在 postgres 数据库上php执行select语句的脚本。我将结果转换为 json 字符串并使用line将其传递给javascript变量。我无法解决的问题是我的 from包含波兰字符 ( ) 编码,当我得到这个值时,它完全没问题,因为字符串没有被转义。这是我这样做的方法: json 的生成:<? echo $a; ?>

jsonphputf-8javascriptUncaught SyntaxError: Unexpected identifier


php

<? $result_json = json_encode($result); ?>

以及我如何将它传递给js:

options_json='<? echo $result_json; ?>';

当我在浏览器中调试时,我的options_json样子:

options_json='[{"code":"za\u0105e ba\u0144stre.".....

我试过escape() utf8_encode()addslashes()。首先没有结果,该addslashes()函数删除了错误,但它破坏了json结构,所以我无法将其还原..

4

2 回答 2

0

它可能对你有用,我正在使用下面的函数来编码那些有阿拉伯文本的数组。试试下面的函数。我不是在处理斜线。

      public function utf8_encode_all($dat) // -- It returns $dat encoded to UTF8
      {
          if (is_string($dat)) return utf8_encode($dat);
          if (!is_array($dat)) return $dat;
          $ret = array();
          foreach($dat as $i=>$d) $ret[$i] = $this->utf8_encode_all($d);
          return $ret;
       }
于 2013-03-26T07:23:15.953 回答
0

只需尝试返回 json 编码值,如下例所示:

$arr_rslt=array();
$query=" Select col1,col2,col3 from tbl";
$result = mysql_query($query);

while( $row = mysql_fetch_array( $result ) )
{

    $arr_rslt[] = $row;
}

echo json_encode($arr_rslt);

在客户端,如果您使用 $.ajax 或 $.post 然后在他们的回调中操作它。也可以在你的 $.ajax 中使用它。

contentType: "application/json; charset=UTF-8",
于 2013-03-26T07:24:32.747 回答