簡體   English   中英

CodeIgniter Restful API返回格式錯誤的中文字符json

[英]CodeIgniter Restful API return json of Chinese character with incorrect format

API應該返回中文的json格式,但是當我調用API時,我得到了所有這樣的中文字符:

[{“ txt”:“ \\ r \\ n \\ u7533 \\ u8bf7 \\ u4eba \\ u9655 \\ u897f \\ u5e7f \\ u836f \\ u5eb7 \\ u5065 \\ u533b \\ u836f \\ u6709 \\ u9650 \\ u516c \\ u53f8 \\ u56e0 \\ u9057 \\ u5931 \\ u4e0 u6d77 \\ u6d66 \\ u4e1c \\ u53d1 \\ u5c55 \\ u94f6 \\ u884c \\ u80a1u u627f \\ u5151 \\ u6c47 \\ u7968 \\ u4e00 \\ u5f20 \\ uff08 \\ u80cc \\ u4e66 \\ u53d6 \\ u5f97 \\ uff09 \\ uff0c \\ u51fa \\ u7968 \\ u4eba \\ u5b9d \\ u9e21 \\ u5e02 \\ u5929 \\ u5b89 \\ u5 \\ 89 u516c \\ u53f8 \\ uff0c \\ u51fa \\ u7968 \\ u65e5 \\ u671f2014 \\ u5e742 \\ u670819 \\ u65e5 \\ uff0c \\ u5230 \\ u671f \\ u65e5 \\ u671f2014 \\ u5e748 \\ u670819 \\ u65e5 \\ uff0c \\ u6536uuu \\ u6b3e \\ 6 \\ 4 u4e5d \\ u8bda \\ u7164 \\ u4e1a \\ u53d1 \\ u5c55 \\ u6709 \\ u9650 \\ u516c \\ u53f8 \\ uff0c \\ u5411 \\ u672c \\ u9662 \\ u7533 \\ u8bf7 \\ u516c \\ u793a \\ u50ac \\ u544a \\ uff0c \\ u672 \\ u6b u53d7 \\ u7406 \\ uff0c \\ u73b0 \\ u4f9d \\ u6cd5 \\ u4e88 \\ u4ee5 \\ u516c \\ u544a \\ u3002 \\ u81ea \\ u516c \\ u544a \\ u4e4b \\ u65e5 \\ u8d7760 \\ u65e5 \\ u5185 \\ uff0c \\ u5229 \\ u5e \\ u5b u5e94 \\ u5411 \\ u672c \\ u9662 \\ u7533 \\ u62a5 \\ u6743 \\ u5229 \\ uff0c \\ u5c4a \\ u65f6 \\ u65e0 \\ u4eba \\ u7533 \\ u62a5 \\ u6743 \\ u5229 \\ uff0c \\ u672c \\ u9662 \\ u5c06 \\ u4f9d \\ u6cd5 \\ u4f5c \\ u51fa \\ u5224 \\ u51b3 \\ uff0c \\ u5ba3 \\ u544a \\ u4e0a \\ u8ff0 \\ u7968 \\ u636e \\ u65e0 \\ u6548 \\ u6e0 \\ u6548 u50ac \\ u544a \\ u671f \\ u95f4 \\ uff0c \\ u8f6c \\ u8ba9 \\ u8be5 \\ u7968 \\ u636e \\ u6743 \\ u5229 \\ u7684 \\ u884c \\ u4e3a \\ u65e0 \\ u6548 \\ u3002“,”報紙“:” \\ u4e2d \\ 56 \\ u7f51“,” dtepublished“:” 2014-03-20“,” dtecreated“:” 2014-03-25 11:29:14“}

我嘗試使用CI_Controller直接查詢數據庫,它以正確的格式顯示結果。 所以我相信這是json的問題。

我在數據庫和前端中都使用UTF-8 ,應如何解決此問題。

這是正常的行為。 所有特殊字符都將被編碼,以免混亂。 使用JSON.parse(json); 在客戶端恢復您的漢字。

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

編輯

當您想在PHP中解碼json時,請使用json_decode

我知道這是一個老問題,但是我也遇到了同樣的問題,但是帶有西班牙語的重音詞,安裝了CI_Controller類,我在我的寧靜服務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'。 那解決了我的特殊字符/重音單詞問題。 希望這會有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM