2014-06-21 37 views
2

我在Laravel有一個特定的問題。Laravel:不能設置JSON utf-8字符集

當我使用echoprint_rvar_dump我的數據(從雄辯中檢索)以正確的格式(UTF-8,希臘語)打印。但是當我使用

return Response::json($data) 

回報像

"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03bf\u03af \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2" 

我已經在設置UTF-8作爲默認字符集我php.inimysql.conf(但這不是問題)。

我嘗試了好幾種方法來設置字符集,如:

Response::json($data,200,$headers) 

其中$頭是一個數組:

'Content-type'=> 'application/json; charset=utf-8' 

但是沒有什麼變化。

我的操作系統是Debian 7 wheezy 64bit,PHP 5.5.13,MySQL 5.6.19和apache2服務器。

回答

2

從Laravel 4.1開始,您可以指定json_encode()選項作爲以下方法的第4個參數。你會想通過JSON_UNESCAPED_UNICODE選項逃脫UTF-8文本

Response::json($data, 200, $headers, JSON_UNESCAPED_UNICODE);

該功能將通過傳遞選項時,它調用json_encode()

http://php.net/manual/en/function.json-encode.php

+1

不再適用於Laravel 5它似乎 – infomaniac

1

JSON_UNESCAPED_UNICODE沒有工作沒有正確的標題設置爲這樣對我來說:

return Response::json($data, 200, array('Content-Type' => 'application/json;charset=utf8'), JSON_UNESCAPED_UNICODE); 

將標題Content-Type設置爲application/json;charset=utf8後,它不適用於我。

適用於當前的Laravel版本。 (5.4)