Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php或javascript在json数组中转义Utf-8_Php_Javascript_Json - Fatal编程技术网

使用php或javascript在json数组中转义Utf-8

使用php或javascript在json数组中转义Utf-8,php,javascript,json,Php,Javascript,Json,我创建了一个php脚本,在postgres数据库上执行select语句。我将结果转换为json字符串,并使用行将其传递给javascript变量。我无法解决的问题是,我的php中的json包含波兰字符(utf-8)编码,当javascript得到这个值时,我得到了未捕获的SyntaxError:Unexpected identifier,它完全没有问题,因为字符串没有转义。我就是这样做的:php生成json: <? $result_json = json_encode($result);

我创建了一个
php
脚本,在postgres数据库上执行
select
语句。我将结果转换为json字符串,并使用
行将其传递给
javascript
变量。

我无法解决的问题是,我的
php
中的
json
包含波兰字符(
utf-8
)编码,当
javascript
得到这个值时,我得到了
未捕获的SyntaxError:Unexpected identifier
,它完全没有问题,因为字符串没有转义。

我就是这样做的:
php
生成json:

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

我尝试了
escape()
utf8\u encode()
addslashes()
。首先,没有结果,
addslashes()
函数删除了错误,但它破坏了
json
结构,因此我无法将其还原。

这可能对您有用。我正在使用下面的函数对具有阿拉伯文文本的数组进行编码。请尝试下面的函数。我不是在处理斜杠

      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;
       }

只需返回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",
$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);
contentType: "application/json; charset=UTF-8",