php的json_encode()中文編碼問題
今天,看東西,突然看到之前寫的程式碼,得記錄下來,不然又遺忘了!
php 5.4.0之前,json_encode() 是不支援 中文編碼的
5.4.0之後,json_encode()新增了 JSON_UNESCAPED_UNICODE 選項,支援了中文,我們得寫一個相容函式:
光上面還不行,得注意 JSON_UNESCAPED_UNICODE,這個常量,在<5.4.0應該是沒有的,我們得定義。function ijson_encode($value, $options = 0) { if (empty($value)) { return false; } if (version_compare(PHP_VERSION, '5.4.0', '<') && $options == JSON_UNESCAPED_UNICODE) { $json_str = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", json_encode($value)); } else { $json_str = json_encode($value, $options); } return addcslashes($json_str, "\\\'\""); }
/*
* 相容 <5.4.0 版本,json_encode() 中文轉為unicode編碼問題。新增 JSON_UNESCAPED_UNICODE 常量
*/
if (!defined('JSON_UNESCAPED_UNICODE')) {
define('JSON_UNESCAPED_UNICODE', 256);<span style="white-space:pre"> </span>// php定義該常量為256
}