来自MySQL数据库的特殊字符的json_encode

Dan*_*any 3 php mysql json utf-8

我需要将MySQL查询的结果编码为JSON格式.

我的数据库是编码的utf8_unicode_ci.

特别是,我有一些特殊的字符(例如,€)存储在我的数据库中,当我应用PHP函数时它产生一个空值json_encode.

我怎样才能解决这个问题?

Pek*_*ica 6

我的盲目猜测是你的MySQL数据库连接没有设置为UTF-8,这导致即使源数据库是UTF-8也会返回ISO-8859-1字符.

这些字符会json_encode()因UTF-8字符集无效而中断json_encode().

您可能必须将连接编码设置为UTF-8.如何做到这取决于您使用的库.

mysql_*功能家庭中,一种方式是

mysql_query("SET names utf8;");
Run Code Online (Sandbox Code Playgroud)

或者在MySQL> 5.0.7中,新的

mysql_set_charset("utf8");
Run Code Online (Sandbox Code Playgroud)