Php mysql日语字符显示不正确

Php mysql日语字符显示不正确,php,mysql,Php,Mysql,我试图插入日文字符并显示它们,但我得到的只是胡言乱语。我已将我的数据库编码设置为utf8\u general\u ci;所有列都从表继承 我使用的代码是: $db = new Database; $json = file_get_contents('php://input'); $obj = json_decode($json, TRUE); $db->query("SET NAMES utf8"); $db->query("SET CHARACTER SET utf8"); $db

我试图插入日文字符并显示它们,但我得到的只是胡言乱语。我已将我的数据库编码设置为utf8\u general\u ci;所有列都从表继承

我使用的代码是:

$db = new Database;
$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
$db->query("SET NAMES utf8");
$db->query("SET CHARACTER SET utf8");
$db->query("INSERT INTO `flash_cards`.`flash_card` (`kanji`) VALUES ('いく')");
$db->execute();
$db->query('select * from flash_card');
$rows = $db->resultset();
print_r('行く');
echo '行く';
print_r(json_encode($rows));
当我直接向页面显示时,页面正确地显示了汉字字符,但是当我从数据库中提取时,问题就出现了。这让我相信这是一个编码/解码问题

我收到的输出是

行く行く[{"id":"1","kanji":"\u3044\u304f"},{"id":"2","kanji":"\u3044\u304f"}]
我不确定我还能做什么。我花了很多时间试图弄明白这一点,但毫无结果。我很清楚stackoverflow中有几个帖子,但我仍然被卡住了


任何帮助都将不胜感激

只有当您的MySQL版本>=5.6时,以下选项才有效

我没有任何日文字符/数据库要测试,但建议
字符集utf8mb4排序规则utf8mb4\u unicode\u 520\u ci
可能比
字符集utf8
更好

编辑 没有读那么多,抱歉,只是发现您使用了
json\u encode()
来获取输出

如果要使用
json\u encode()
获取字符,应执行以下操作:

print_r(json_encode($rows, JSON_UNESCAPED_UNICODE));

您当前的mysql版本是什么?mysql 5.7.19-0ubuntu0.16.04.1如果您实际输出文本会发生什么?我可以查看它。这些字符是使用“echo”打印出来的行く行く"这很好,但我记得你说过你对数据库中的数据有问题…U+3XXX在BMP中很好。尝试这样做时,我返回的字符是:“\u3044\u304f”@o6t9o更新了我的答案:)