- 取得訊息,轉成json格式
- 當成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 中文亂碼的問題
沒有留言:
張貼留言