字符编码javascript

character encoding javascript

本文关键字:javascript 编码 字符      更新时间:2023-09-26

我得到了一个php文件,管理我的数据库中的实体。我想做的是从数据库中检索一组字符串,并通过json_encode返回给javascript函数。

问题是,当php脚本检索值时,重音字符显示良好。

当我像这样输出时:

echo "<pre>";
print_r($row);
echo "</pre>";

:

Array
(
    [0] => 1
    [1] => Que és la bolsa de trabajo de la FIB?
)

但是当我想通过json_encode将数据返回给ajax调用时,我得到这个:

["1","Que 'u00e9s la bolsa de trabajo de la FIB?"]

在json_encode中输出数据之前,我要做的是:

function encode_items(&$item, $key)
{
    $item = utf8_encode($item);
}
array_walk_recursive($stack, 'encode_items');
echo json_encode($stack);

有什么好主意吗?如果它在PHP的echo中显示正常它在javascript ajax调用中也会显示正常,对吧?

谢谢

您正在寻找json_encodeJSON_UNESCAPED_UNICODE标志:

JSON_UNESCAPED_UNICODE (integer)
按字面意思编码多字节Unicode字符(默认是转义为'uXXXX)。自PHP 5.4.0起可用。

$stack输入数组无关。顺便说一句,这些转义值是有效的JSON,没有必要避免它们。他们甚至会让你的生活更容易,如果你不发送Unicode编码的HTML。

您的JSON结果没有问题。

PHP 5.4之后,如果您愿意,可以使用JSON_UNESCAPED_UNICODE选项。

echo json_encode($stack, JSON_UNESCAPED_UNICODE);