以前碰到最多的是json_encode是gbk 編碼時出現亂碼,今天發現uft8也會出現中文亂碼了,下面我們一起看問題如何解決吧。
utf-8字符json_encode為變成轉成utf16編碼,也就是介個樣子:
| ?代碼如下 | 復制代碼 |
$ ./php/bin/php -r 'echo json_encode("中文");' "u4e2du6587" 可讀性降低,最新的php 5.4的json_encode支持了UTF-8編碼,可以把中文不編碼直接輸出。 那低版本怎么辦呢?也有辦法,封裝成一個函數給大家分享一下: | ?代碼如下 | 復制代碼 | function my_json_encode($var) { return preg_replace("/u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($var)); } 例,利用另一種辦法來解決 后臺PHP頁面(頁面編碼為UTF-8或者已經把字符轉為UTF-8)使用json_encode將PHP中的array數組轉為JSON字符串。例如: | ?代碼如下 | 復制代碼 | $testJSON=array('name'=>'中文字符串','value'=>'test'); echo json_encode($testJSON); ?> 查看輸出結果為: {“name”:”u4e2du6587u5b57u7b26u4e32″,”value”:”test”} 可見即使用UTF8編碼的字符,使用json_encode也出現了中文亂碼。解決辦法是在使用json_encode之前把字符用函數urlencode()處理一下,然后再json_encode,輸出結果的時候在用函數urldecode()轉回來。具體如下: | ?代碼如下 | 復制代碼 | $testJSON=array('name'=>'中文字符串','value'=>'www.jquerycn.cn''); //echo json_encode($testJSON); foreach ( $testJSON as $key => $value ) { $testJSON[$key] = urlencode ( $value ); } echo urldecode ( json_encode ( $testJSON ) ); ?> 查看輸出結果為: {“name”:”中文字符串”,”value”:”www.jquerycn.cn”} 到此,成功地輸出了中文字符 |
|
|
|
總結
以上是生活随笔為你收集整理的php 输出json utf8,php json_encode utf-8中文问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。