首頁  >  文章  >  後端開發  >  php物件轉json中文亂碼

php物件轉json中文亂碼

PHPz
PHPz原創
2023-05-22 21:36:06655瀏覽

在進行 Web 開發時,經常會用到 JSON,將物件轉換為 JSON 數據,並透過 AJAX 進行非同步傳輸。然而在使用 PHP 後台進行 JSON 格式化輸出時,可能會遇到物件轉換為 JSON 格式後中文亂碼的情況。本文將介紹如何解決這個問題。

問題描述

在PHP 程式碼中,我們使用json_encode() 函數將物件轉換成JSON 格式的字串,然後透過echo輸出。但是,當JSON 中包含中文時,就會出現亂碼的情況,如下圖所示:

php物件轉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 核心設定

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn