【发布时间】:2017-07-19 12:01:08
【问题描述】:
我知道有很多关于这个问题的话题,但我花了最后几个小时尝试各种方法,但我离解决方案还很远。就这样吧……
这是我的 jquery:
$.post('inc/app_json_f.php',{params:priv_params}, function (data) {
console.log(data);
// displays: \u00e2\u0082\u00ac instead of €
data = JSON.parse(data);
console.log(data);
// displays: â¬â¬ instead of €
}
这是我的 php(app_json_f.php 页面):
$qry = 'select ... from ... where ...';
$data = $db->do_select($qry);
echo json_encode(f_utf8_json($data));
f_utf8_json 函数将检查 $data 并使用 utf8_encode() 转换每个值。
此时,echo json_encode(...) 会在控制台显示如下内容:
\u00e2\u0082\u00ac
而我想看到€符号。
数据来自具有排序规则 utf8_general_ci 的 MySQL 数据库。 PHP 的字符集是 UTF-8。
有什么建议吗?
【问题讨论】:
-
PHP 默认连接到 latin1 字符集,这可能就是问题所在。因此,您需要更改 PHP MySQL 连接的连接字符集 -> 对于 mysqli,请参见 stackoverflow.com/questions/10829816/…,对于 PDO,请参见 stackoverflow.com/questions/4361459/php-pdo-charset-set-names
-
忘了说:我已经添加了 mysqli_set_charset($this->db_conn, "utf8");连接后立即。
标签: php jquery mysql json utf-8