jQuery HTML追加导致UTF-8国家语言字符问题

时间:2015-09-27 15:30:28

标签: javascript jquery mysql utf-8

我遇到了从UTF-8驱动的InnoDB MySQL数据库返回html的问题 - 实际上是对象,用数据实现并返回由jQuery异步显示。该网站和数据库仅使用UTF-8。

因此,当我发布某些内容时,它会进入数据库,插入,对象将使用我插入的数据完成,并且相应的html会返回到jQuery,遗憾的是,由于某些原因,而不是国家字母,显示的内容如下:{ {1}}等等。

当我刷新网站时,它恢复正常,并且字符显示正确。

想法?

在进入DB类之前:

u0142u00f3

从DB课程回来后:

$strNoBreakSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$strNormalSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$ntc = str_replace($strNoBreakSpace, $strNormalSpace, $content);

在向jQuery展示之前:

$thread= str_replace(array(chr(10), chr(13)), '', $thread);
$thread_html = json_encode(array('status' => 1, 'success' => $thread_html));
array_push($results, $upd, $ins, $thread_html);

是striplashes什么废墟吗?我需要添加这个,以及这些mb_converts,否则我在那个html中有json对象的问题,有很多slases / td,/ tr \,\ r \ n \ r \ n等。

jQuery看到的是:

    $list = array('success' => stripslashes($result[2]));

1 个答案:

答案 0 :(得分:1)

在PHP 5.4中,您可以对JSON_UNESCAPED_UNICODE使用json_encode标记。

在PHP 5.3或更低版本中,这是一个辅助函数:

function json_encode_unicode($input) {

    return preg_replace_callback(
        '/\\\\u([0-9a-zA-Z]{4})/',
        function ($matches) {
            return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
        },
        json_encode($input)
    );

}