首頁 > 後端開發 > php教程 > json_encode如何防止漢字轉義成unicode

json_encode如何防止漢字轉義成unicode

WBOY
發布: 2016-07-29 09:02:09
原創
1052 人瀏覽過

眾所周知,json_encode通常會把json中的漢字轉義成unicode,但這不一定是我們想要的。有時候,我們需要取得漢字形式的json字串,例如需要取得gbk編碼的json字串(只要把漢字形式的字串轉碼就可以得到了)。有什麼好辦法麼?

php官方聽到了這個需求,並提供了一個可靠的解決方案:JSON_UNESCAPED_UNICODE。這個參數可以保證json_encode不再將漢字轉為unicode。

似乎這樣就解決了?當我們高高興興的用這個參數的時候,發現並沒有什麼卵用。仔細一看,這個參數只有5.4之後的php支援。那更早期的php怎麼辦呢?

社群提供了一個方案:

<span>1</span><span>function</span> my_json_encode(<span>$arr</span><span>){
</span><span>2</span><span>//</span><span>convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding</span><span>3</span><span>array_walk_recursive</span>(<span>$arr</span>, <span>function</span> (&<span>$item</span>, <span>$key</span>) { <span>if</span> (<span>is_string</span>(<span>$item</span>)) <span>$item</span> = mb_encode_numericentity(<span>$item</span>, <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>); });
</span><span>4</span><span>return</span> mb_decode_numericentity(json_encode(<span>$arr</span>), <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>);
</span><span>5</span> }
登入後複製

不過這種方法只有5.3才支持,因為5.2並不支持匿名函數。至於解決辦法?把匿名函數定義一下即可。

以上就介紹了json_encode如何防止漢字轉義成unicode,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板