在進行 Web 開發時,經常會用到 JSON
,將物件轉換為 JSON
數據,並透過 AJAX
進行非同步傳輸。然而在使用 PHP 後台進行 JSON
格式化輸出時,可能會遇到物件轉換為 JSON
格式後中文亂碼的情況。本文將介紹如何解決這個問題。
在PHP 程式碼中,我們使用json_encode()
函數將物件轉換成JSON 格式的字串,然後透過echo
輸出。但是,當JSON 中包含中文時,就會出現亂碼的情況,如下圖所示:
#清晰的中文被轉換為了亂碼,這對用戶和開發者都是不友善的。接下來,我們將介紹三種解決方法。
在json_encode()
函數前面加上json_encode()-> mb_convert_encoding()
,將中文手動編碼成utf-8。
範例程式碼如下:
<?php $arr = [ 'name' => '张三', 'age' => 18, 'gender' => '男' ]; echo mb_convert_encoding(json_encode($arr, JSON_UNESCAPED_UNICODE), 'UTF-8'); ?>
加入這段程式碼後,輸出的字串中的中文就會被正確地轉換為 utf-8 編碼,而不是亂碼。
json_encode()
的參數#在json_encode()
函數中加入JSON_UNESCAPED_UNICODE
# 參數,告訴json_encode()
函數不要將中文編碼成Unicode,直接保留中文即可。
範例程式碼如下:
<?php $arr = [ 'name' => '张三', 'age' => 18, 'gender' => '男' ]; echo json_encode($arr, JSON_UNESCAPED_UNICODE); ?>
加入這個參數後,輸出的 JSON 中的中文就會被正確輸出,而不是亂碼。
在 PHP 核心設定中,有一個參數 default_charset
,它表示輸出一些文字時使用的預設字元編碼。如果該參數被設定為 UTF-8,那麼 JSON 輸出時中文也會被正確地編碼。
範例程式碼如下:
<?php ini_set('default_charset', 'utf-8'); $arr = [ 'name' => '张三', 'age' => 18, 'gender' => '男' ]; echo json_encode($arr); ?>
將這段程式碼放在需要輸出 JSON 的腳本中,就可以保證 JSON 中的中文不會出現亂碼了。
在進行 Web 開發時,使用 JSON 格式進行資料傳輸是非常常見的。在 PHP 中,使用 json_encode()
函數將物件序列化成 JSON 格式的字串時,可能會出現中文亂碼的情況。本文介紹了三種解決方法:手動將中文編碼、設定 json_encode()
的參數和修改 PHP 核心設定中的 default_charset
參數。這些方法都能夠有效解決 JSON 中文亂碼的問題,具體的使用可根據實際情況選擇。
以上是php物件轉json中文亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!