Konvertieren Sie ein PHP-Objekt in einen verstümmelten chinesischen JSON-Code

PHPz
Freigeben: 2023-05-22 21:36:06
Original
661 Leute haben es durchsucht

Bei der Webentwicklung wird JSON häufig verwendet, um Objekte in JSON-Daten umzuwandeln und diese asynchron über AJAX zu übertragen. Wenn Sie jedoch das PHP-Backend für eine JSON-formatierte Ausgabe verwenden, kann es nach der Konvertierung des Objekts in das JSON-Format zu verstümmelten chinesischen Zeichen kommen. In diesem Artikel wird erläutert, wie Sie dieses Problem beheben können. JSON,将对象转换为 JSON 数据,并通过 AJAX 进行异步传输。然而在使用 PHP 后台进行 JSON 格式化输出时,可能会遇到对象转换为 JSON 格式后中文乱码的情况。本文将介绍如何解决这个问题。

问题描述

在 PHP 代码中,我们使用 json_encode() 函数将对象转换成 JSON 格式的字符串,然后通过 echo 输出。但是,当 JSON 中包含中文时,就会出现乱码的情况,如下图所示:

Konvertieren Sie ein PHP-Objekt in einen verstümmelten chinesischen JSON-Code

清晰的中文被转换为了乱码,这对用户和开发者都是不友好的。接下来,我们将介绍三种解决方法。

解决方法

方法一:手动将中文编码

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');
?>
Nach dem Login kopieren

加入这一段代码后,输出的字符串中的中文就会被正确地转换为 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);
?>
Nach dem Login kopieren

加入这个参数后,输出的 JSON 中的中文就会被正确输出,而不是乱码。

方法三:修改 PHP 核心设置

在 PHP 核心设置中,有一个参数 default_charset,它表示输出一些文本时使用的默认字符编码。如果该参数被设置为 UTF-8,那么 JSON 输出时中文也会被正确地编码。

示例代码如下:

<?php
ini_set('default_charset', 'utf-8');
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr);
?>
Nach dem Login kopieren

将这段代码放在需要输出 JSON 的脚本中,就可以保证 JSON 中的中文不会出现乱码了。

结束语

在进行 Web 开发时,使用 JSON 格式进行数据传输是非常常见的。在 PHP 中,使用 json_encode() 函数将对象序列化成 JSON 格式的字符串时,可能会出现中文乱码的情况。本文介绍了三种解决方法:手动将中文编码、设置 json_encode() 的参数和修改 PHP 核心设置中的 default_charset

Problembeschreibung

Im PHP-Code verwenden wir die Funktion json_encode(), um das Objekt in eine JSON-Formatzeichenfolge zu konvertieren und es dann über echo . Wenn JSON jedoch Chinesisch enthält, werden verstümmelte Zeichen angezeigt, wie in der folgenden Abbildung dargestellt: 🎜🎜<img src="https://img-blog.csdnimg.cn/20181218104120173.png" alt="Chinesisches verstümmeltes Codebeispiel " title="Beispiel für verstümmelten chinesischen Code">🎜🎜Klare chinesische Zeichen werden in verstümmelte Zeichen umgewandelt, was für Benutzer und Entwickler unfreundlich ist. Als nächstes stellen wir drei Lösungen vor. 🎜<h2>Lösung</h2> <h3>Methode 1: Chinesisch manuell kodieren</h3>🎜Fügen Sie <code>json_encode()->mb_convert_encoding vor der Funktion <code>json_encode() () hinzu, kodieren Sie Chinesisch manuell in utf-8. 🎜🎜Der Beispielcode lautet wie folgt: 🎜rrreee🎜Nach dem Hinzufügen dieses Codeabschnitts wird das Chinesisch in der Ausgabezeichenfolge korrekt in die UTF-8-Codierung anstelle von verstümmelten Zeichen konvertiert. 🎜

Methode 2: Legen Sie die Parameter von json_encode()

fest. 🎜Fügen Sie den Parameter JSON_UNESCAPED_UNICODE in der Funktion json_encode() hinzu sagen: Die Funktion json_encode() kodiert Chinesisch nicht in Unicode, sondern behält einfach das Chinesische bei. 🎜🎜Der Beispielcode lautet wie folgt: 🎜rrreee🎜Nach dem Hinzufügen dieses Parameters wird das Chinesisch im Ausgabe-JSON korrekt anstelle von verstümmelten Zeichen ausgegeben. 🎜

Methode 3: PHP-Kerneinstellungen ändern

🎜In den PHP-Kerneinstellungen gibt es einen Parameter default_charset, der die Standardzeichenkodierung angibt, die bei der Ausgabe von Text verwendet wird. Wenn dieser Parameter auf UTF-8 gesetzt ist, wird Chinesisch bei der Ausgabe von JSON korrekt codiert. 🎜🎜Der Beispielcode lautet wie folgt: 🎜rrreee🎜Fügen Sie diesen Code in das Skript ein, das JSON ausgeben muss, um sicherzustellen, dass das Chinesisch in JSON nicht verstümmelt wird. 🎜

Fazit

🎜Bei der Webentwicklung wird häufig das JSON-Format für die Datenübertragung verwendet. Wenn Sie in PHP die Funktion json_encode() verwenden, um ein Objekt in eine Zeichenfolge im JSON-Format zu serialisieren, werden möglicherweise verstümmelte chinesische Zeichen angezeigt. In diesem Artikel werden drei Lösungen vorgestellt: manuelles Codieren von Chinesisch, Festlegen der Parameter von json_encode() und Ändern des Parameters default_charset in den PHP-Kerneinstellungen. Diese Methoden können das Problem der verstümmelten chinesischen JSON-Zeichen effektiv lösen, und die spezifische Verwendung kann entsprechend der tatsächlichen Situation ausgewählt werden. 🎜

Das obige ist der detaillierte Inhalt vonKonvertieren Sie ein PHP-Objekt in einen verstümmelten chinesischen JSON-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage