大家好!
最近遇到一個問題
就是 json_encode 之後的字串問題
預設中
json_encode 會將 UTF-8的字元都轉成 \uXXXX 之類的
但是問題是,這樣的字串其實是有問題的
怎麼說呢...因為很多時候,寫入資料的時候會變成 \\uXXXX
然後在寫入之後又會變成 \\\uXXXX
這樣就容易出錯了
至於詳細原因我就不是很清楚
總之這是常常會被過濾掉的字元
在PHP 5.4 之後版本可以用
json_encode($data, JSON_UNESCAPED_UNICODE);
來取消 UTF-8字元的轉碼
但是在 PHP 5.3之前都不行
那我找到一個解決方案
參考來源
$data = array('安安','您好'); $jsonData = json_encode($data); $newJsonData = preg_replace_callback('/\\\\u(\w{4})/', function ($matches) { return html_entity_decode('&#x' . $matches[1] . ';', ENT_COMPAT, 'UTF-8'); }, $jsonData); //$jsonData : 有 \uXXX 不太好 //$newJsonData : 沒有 \uXXX 直接寫入UTF-8字元,好!
這樣就可以解決這個問題了
給大家參考喔
感恩!
留言板
歡迎留下建議與分享!希望一起交流!感恩!