在 php 中使用 json_encode() 內置函數(php > 5.2)能夠使用得 php 中數據能夠與其它語言很好的傳遞而且使用它。javascript
這個函數的功能是將數值轉換成json數據存儲格式。php
?前端
1java 2數據庫 3json 4數組 5app 6函數 7網站 8 9 |
|
程序運行結果以下:
{"Name":null,"Age":}
json_encode 函數中中文被編碼成 null 了,Google 了一下,很簡單,爲了與前端緊密結合,Json 只支持 utf- 編碼,我認爲是前端的 Javascript 也是 utf- 的緣由。
1 2 3 4 5 6 7 8 |
|
這個程序的運行結果爲:
{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}
數組中全部中文在json_encode以後都不見了或者出現\u2353等。
解決方法是用urlencode()函數處理如下,在json_encode以前,把全部數組內全部內容都用urlencode()處理一下,然用json_encode()轉換成json字符串,最後再用urldecode()將編碼過的中文轉回來。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
此次成功了,運行結果以下:
{"Name":"希亞","Age":"20"}
下面給你們介紹PHP json_encode中文亂碼解決方法
相信不少人在使用Ajax與後臺php頁面進行交互的時候都碰到過中文亂碼的問題。JSON做爲一種輕量級的數據交換格式,備受親睞,可是用PHP做爲後臺交互,容易出現中文亂碼的問題。JSON和js同樣,對於客戶端的字符都是以UTF8的形式進行處理的,也就是說,使用JSON做爲提交和接收的數據格式時字符都採用UTF8編碼處理,當咱們的頁面編碼和數據庫編碼不是採用UTF8的時候,就極容易出現中文亂碼的問題。解決辦法天然是在用js或者PHP處理JSON數據的時候都採用UTF8的形式。
PHP5.2或以上的版本把json_encode做爲內置函數來用,給網站製做者帶來了很大的方便,可是咱們必須注意到json_encode只支持UTF8編碼的字符,不然,中文亂碼或者空值就出現了。
解決辦法分爲如下兩個步驟。
Step1
保證在使用JSON處理的時候字符是以UTF8編碼的。具體咱們能夠把數據庫編碼和頁面編碼都改成UTF8。固然喜歡用gbk編碼的話,能夠在進行JSON處理前,把字符轉爲UTF8形式。在PHP中有以下方法:
1 2 3 4 5 6 7 |
|
Step2
後臺PHP頁面(頁面編碼爲UTF-8或者已經把字符轉爲UTF-8)使用json_encode將PHP中的array數組轉爲JSON字符串。例如:
1 2 3 4 |
|
查看輸出結果爲:
{「name」:」\u4e2d\u6587\u5b57\u7b26\u4e32″,」value」:」test」}
可見即便用UTF8編碼的字符,使用json_encode也出現了中文亂碼。解決辦法是在使用json_encode以前把字符用函數urlencode()處理一下,而後再json_encode,輸出結果的時候在用函數urldecode()轉回來。具體以下:
1 2 3 4 5 6 7 8 |
|
查看輸出結果爲:
{「name」:」中文字符串」,」value」:」test」}
到此,成功地輸出了中文字符。隨意使用json_encode吧。這樣子在PHP後臺輸出的JSON字符串在前臺javascript中Ajax接收後eval出來也不會出現中文亂碼,由於js在處理JSON格式數據是也是以UTF8的形式進行的,與PHP相似,故接收PHP頁面的JSON字符串不會出現問題。