網頁

2013年6月24日 星期一

Wordpress開發筆記-json_encode

有個需求
  1. 取得訊息,轉成json格式
  2. 當成post的meta存進資料庫

使用get方式丟上中文message後,本以為message有url encode過,再來用json_encode就沒問題了,卻發現取得時本來應該要是\U1234這樣的格式變成U1234的樣子存進資料庫,本以為是GET的中文出問題,但從$_GET取得時,是正常呈現。

找半天才發現是add_post_meta及update_post_meta會將“\”去除,若用json_encode過,會將中文都變成無法還原的亂碼。所以

Step1: 取得數值
$value = $_GET['test'];

Step2: 轉json格式
$value = json_encode($value);

Step3: url encode將“\”轉成ascii code
$value = urlencode($value);

Step4: 存進資料庫
add_post_meta(post_id,'message', $value);

記得取出時要decode回來,如:
$value = urldecode(get_post_meta(post_id,'message'));

參考網址:
解決json_encode中文UNICODE轉碼問題
解決PHP JSON 中文亂碼的問題

沒有留言:

張貼留言