[英]JSON encode unicode issue on PHP5.3
json_encode之后的希伯來語字符串是這樣的:[{“ id”:“ 1”,“ value”:“ \\ u05d1 \\ u05dc \\ u05d0 \\ u05d2 \\ u05df”}任何想法這是什么編碼,以及如何將其轉換為是工作還是再次可讀? 順便說一句,這是一個運行在PHP 5.3上的Joomla系統,字符串來自發布請求,不存在數據庫和UTF-8元標記。
這就是JSON編碼非ASCII字符的方式。 當您通過JSON解析器傳遞文本時,該文本將再次可讀。
PHP 5.4為json_encode
定義了一個新選項JSON_UNESCAPED_UNICODE
,該選項JSON_UNESCAPED_UNICODE
傳遞UTF-8文本,而無需將其轉換為轉義代碼。 由於您使用的是PHP 5.3,因此無法使用它,但是如果您使用的是5.4,則將使用它:
$json = json_encode($obj, JSON_UNESCAPED_UNICODE); // PHP 5.4 required
但是,這不是必需的,因為JSON解析器將解碼轉義碼。
$encoded = json_encode($json);
$unescaped = preg_replace_callback('/\\\\u(\w{4})/', function ($matches) {
return html_entity_decode('&#x' . $matches[1] . ';', ENT_COMPAT,'UTF-8');
}, $encoded);
file_put_contents('sample.json', $unescaped);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.