我正在尝试插入日文字符并显示它们,但我得到的只是胡言乱语。我已将数据库编码设置为utf8_general_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中的几个帖子,但我仍然卡住了。
任何帮助将不胜感激。
答案 0 :(得分:1)
以下内容仅在您的MySQL版本为> = 5.6 时才有效。
我没有要测试任何日语字符/数据库,但following建议CHARACTER SET utf8mb4 COLLATION utf8mb4_unicode_520_ci
可能比SET CHARACTER SET utf8
更好。
没有读过那么多内容,抱歉发现您使用json_encode()
来获取输出。
如果您想使用json_encode()
获取字符,请执行以下操作:
print_r(json_encode($rows, JSON_UNESCAPED_UNICODE));