2017-08-06 157 views
1

我想插入日文字符並顯示它們,但我得到的只是亂碼。我已經將我的數據庫編碼設置爲utf8_general_ci;所有列都從表中繼承。mysql日文字符顯示不正確

我使用的代碼是:

$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

你目前的MySQL版本? – funilrys

+0

mysql 5.7.19-0ubuntu0.16.04.1 – o6t9o

+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)); 
+0

U + 3XXX是在BMP內。 –

+0

當試圖這樣做時,我得到的字符是:「\ u3044 \ u304f」 – o6t9o

+0

@ o6t9o更新我的回答:) – funilrys