使用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",