Friday, June 6, 2014

[JavaScript][jQuery][PHP] 解決 php 使用 json_encode 會自動將中文編碼的問題 (包括在 javascript 的解碼)

5.4 以上的新版 PHP 可以透過參數去關閉自動編碼,請參考 這篇

PHP的部分:

但是,如果是 5.3 以下的舊版 PHP 無法使用 json_encode 的 JSON_UNESCAPED_UNICODE 參數,這時候就要手動處理,如下:
$arr[] = urlencode('中文');
$json = json_encode($arr);

如果要轉回陣列只需使用 json_decode(),如下:
$arr = json_decode($json, true);
json_decode的第二個參數可以控制資料型態,如果不給值預設是回傳物件格式,如果給true則會回傳陣列格式。


JavaScript的部分:

當使用 ajax 取到 $json 時,會需要在 javascript 將中文解碼,方式如下:
success: function(data) {
  $.each(data, function(k, v) {
    alert(decodeURIComponent(v));
  }
}

備註:
1. 查 PHP 版本的語法
echo PHP_VERSION;

No comments:

Post a Comment