2011-12-28 186 views
1

PHP JSON輸出我使用這個PHP腳本特殊字符

​​

輸出是JSON。在mySQL數據庫中,有「ü,ä,ö」(德語)的條目 對於包含「ü,ä,ö」的條目,該值爲「null」。我無法弄清楚這些角色有什麼問題。

+0

當'json_encode'不返回字符串時發生錯誤。檢查它是否返回NULL並處理錯誤情況。要找出發生了哪個錯誤,請使用['json_last_error'](http://php.net/manual/en/function.json-last-error.php)。 – hakre 2011-12-28 23:18:02

+1

哪種編碼具有來自數據庫的數據?可能你唯一需要做的就是建立連接字符集UTF-8。 – hakre 2011-12-28 23:19:57

+0

在mysql db中使用「latin1_general_ci」 – tobias 2011-12-28 23:21:29

回答

1

在將每個字符串值傳遞給json_encode之前,先調用utf8_encode

+0

你能給我一個提示如何實現它。我已經在上面添加了我的PHP代碼。 – tobias 2011-12-28 23:13:40

+0

用'$ output [] = is_string($ e)替換'$ output [] = $ e;'' utf8_encode($ e)? $ e;' – 2011-12-28 23:14:30

+0

好的,我們必須更換第二個?與a:但我仍然得到「空」而不是例如單詞「für」 – tobias 2011-12-28 23:17:39

0

對於通過ajax和json從php到js的瑞典字符集,同樣的問題包含任何字符,例如:ÅÄÖ被賦值爲null。該解決方案被證明是相當簡單:

  1. 登錄到PHP myadmin
  2. 變化的MySQL連接校對到utf8_swedish_ci(或你的語言等價,我的猜測是utf8_unicode_ci德國,但你可能知道更好)。
  3. 刪除本地存儲的數據,如緩存,餅乾和localStorage以及它的工作原理!

因此,這裏的關鍵是確保在phpmyadmin(或類似的)的主頁中設置正確的MySQL連接排序規則,並在整個數據庫中重複使用相同的排序規則。