簡體   English   中英

JSON在PHP5.3上編碼unicode問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM