【问题标题】:Laravel: Cant set JSON utf-8 charsetLaravel:无法设置 JSON utf-8 字符集
【发布时间】:2014-08-16 09:45:56
【问题描述】:

我在 Laravel 中有一个特定的问题。

当我使用 echoprint_rvar_dump 时,我的数据(从 eloquent 检索)以正确的格式(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"

我已经在php.inimysql.conf 中将 UTF-8 设置为默认字符集(但这不是问题)。

我尝试了几种设置字符集的方法,例如:

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

其中 $headers 是一个数组,其中包含:

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

但没有任何改变。

我的操作系统是 Debian 7 wheezy 64bit, PHP version 5.5.13 , MySQL 5.6.19 and apache2 server。

【问题讨论】:

    标签: php json laravel-4


    【解决方案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)

    【讨论】:

      【解决方案2】:

      从 Laravel 4.1 开始,您可以在下面的方法中指定 json_encode() 选项作为第四个参数。您需要传递 JSON_UNESCAPED_UNICODE 选项来转义 utf-8 文本

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

      这个函数会在调用json_encode()时传递选项

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

      【讨论】:

        猜你喜欢
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        相关资源
        最近更新 更多