【问题标题】:CodeIgniter Restful API return json of Chinese character with incorrect formatCodeIgniter Restful API 返回格式不正确的汉字 json
【发布时间】:2014-03-25 12:01:10
【问题描述】:

API 应该返回一个带有中文的json 格式,但是当我调用 API 时,我得到的所有中文字符都是这样的:

[{"txt":"\r\n\u7533\u8bf7\u4eba\u9655\u897f\u5e7f\u836f\u5eb7\u5065\u533b\u836f\u6709\u9650\u516c\u53f8\u56e0\u9057\u5931 \u4e0a\u6d77\u6d66\u4e1c\u53d1\u5c55\u94f6\u884c\u80a1\u4efd\u6709\u9650\u516c\u53f8\u5b9d\u9e21\u652f\u884c\u7b7e\u53d1\u7684\u7968\u53f7\u4e3a3100005122723877\u94f6 \u884c\u627f\u5151\u6c47\u7968\u4e00\u5f20\uff08\u80cc\u4e66\u53d6\u5f97\uff09\uff0c\u51fa\u7968\u4eba\u5b9d\u9e21\u5e02\u5929\u5b8\u9\u5929\u5b8\u9\u67d \u9650\u516c\u53f8\uff0c\u51fa\u7968\u65e5\u671f2014\u5e742\u670819\u65e5\uff0c\u5230\u671f\u65e5\u671f2014\u5e748\u670819\u65e5\uff0c\u6536\u6b3e\u4eba\u4e3a\u9655 \u897f\u4e5d\u8bda\u7164\u4e1a\u53d1\u5c55\u6709\u9650\u516c\u53f8\uff0c\u5411\u672c\u9662\u7533\u8bf7\u516c\u793a\u50ac\u544a\u50ac\u544a\u50ac\u544a\uff2\u660c \u5b9a\u53d7\u7406\uff0c\u73b0\u4f9d\u6cd5\u4e88\u4ee5\u516c\u544a\u3002\u81ea\u516c\u544a\u4e4b\u65e5\u8d7760\u65e5\u5185\uffbb0c\u1732\u5185\uffb0c\u17322 \u4eba\u5e94\u5411\u672c\u9662\u7533\u62a5\u6743\u5229\uff0c\u5c4a\u65f6\u65e0\u4eba\u7533\u62 a5\u6743\u5229\uff0c\u672c\u9662\u5c06\u4f9d\u6cd5\u4f5c\u51fa\u5224\u51b3\uff0c\u5ba3\u544a\u4e0a\u8ff0\u7968\u636e\u65e0\u5728u5\u5\602 u793a\u50ac\u544a\u671f\u95f4\uff0c\u8f6c\u8ba9\u8be5\u7968\u636e\u6743\u5229\u7684\u884c\u4e3a\u65e0\u6548\u3002","报纸"d:"\u4e2d\u56 \u9662\u7f51","dtepublished":"2014-03-20","dtecreated":"2014-03-25 11:29:14"}]

我曾尝试使用CI_Controller直接查询数据库,它以正确的格式显示结果。所以我相信这是json的问题。

我在数据库和前端都使用UTF-8,我应该如何解决这个问题。

【问题讨论】:

    标签: php json api codeigniter


    【解决方案1】:

    这是正常行为。所有特殊字符都将被编码,以免弄乱。在客户端使用JSON.parse(json); 来恢复你的汉字。

    看看:json_encode (PHP),例如JSON.parse (JS, Mozilla Firefox)

    编辑

    当你想在 PHP 中解码 json 时,使用json_decode

    【讨论】:

    • 您好 Tobias,感谢您的快速回答。我前端不用JS,接收json的页面是PHP页面,你知道PHP中怎么做JSON.parse吗?
    【解决方案2】:

    我知道这是一个老问题,但我也遇到了同样的问题,但使用西班牙语重音词,Insted 使用 CI_Controller 类,我在我的 restful 服务codeigniter-restserver 上使用 Rest_Controller 类。导致我的代码出现问题的原因是我在响应中直接返回带有特殊字符的字符串,如下所示:

    public function users_get()
    {
        $this->response('string with special character such as animación',     REST_Controller::HTTP_OK);
    }
    

    这导致字符串以 unicode 形式返回。相反,我将响应包装到一个数组中,如下所示:

    public function users_get()
    {
        $data["message"] = 'string with special character such as animación';
        $this->response($data, REST_Controller::HTTP_OK);
    } 
    

    在此之前,我确保在 config.php 文件中将我的字符集设置为 $config['charset'] = 'UTF-8'。这解决了我的特殊字符/重音字问题。希望这会很有用。

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2019-01-02
      • 1970-01-01
      • 2017-04-05
      相关资源
      最近更新 更多