Bei der Entwicklung von REST -APIs ist es entscheidend, Daten korrekt zu codieren und zu übertragen. Insbesondere beim Schreiben von APIs mithilfe von MySQL -Datenbanken und PHP müssen wir häufig sicherstellen, dass die aus der Datenbank gelesenen Daten korrekt in das JSON -Format codiert und korrekt an den Client übertragen werden können. Wenn es ein Problem mit der Codierung gibt, kann dies zu verstümmelten chinesischen Charakteren oder anderen abnormalen Display -Phänomenen führen. In diesem Artikel wird erläutert, wie Sie die Richtigkeit der JSON -Codierung sicherstellen können, wenn Sie MySQL -Datenbanken über die MySQLI :: Get_Charset -Methode verwenden.
Wenn unsere REST -API Daten aus einer MySQL -Datenbank erhält und sie an den Client zurückgibt, wird der Datenaustausch häufig im JSON -Format durchgeführt. Wenn der Datenbankzeichen nicht der PHP -Codierung entspricht, insbesondere wenn Sonderzeichen wie Chinesen zurückgegeben werden, kann verstümmelt erscheinen. Häufige verstümmelte Probleme sind in der Regel codierende Umwandlungsprobleme, die durch inkonsistente Charaktersätze verursacht werden. Wir müssen sicherstellen, dass die Datenbankverbindung den richtigen Zeichen verwendet, um diese Probleme zu vermeiden.
In MySQL-Datenbanken verwenden wir normalerweise den UTF-8- Zeichen, um Textdaten zu speichern und zu übertragen. In PHP verwenden wir die MySQLI -Erweiterung, um mit der MySQL -Datenbank zu interagieren. Die MySQLi :: Get_Charset -Methode kann uns helfen, den Zeichensatz der aktuellen Datenbankverbindung zu erhalten und sicherzustellen, dass wir den UTF-8- Zeichensatz verwenden.
<?php
// Erstellen Sie eine Datenbankverbindung
$mysqli = new mysqli("localhost", "username", "password", "database");
// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Holen Sie sich den Charaktersatz der aktuell verbundenen Angeschlossenen
$current_charset = $mysqli->get_charset();
// Ausgabe des aktuellen Zeichensatzes
echo "Aktueller Zeichensatz: " . $current_charset->charset;
// Stellen Sie den Zeichen auf UTF-8(Wenn nicht gesetzt)
if ($current_charset->charset !== 'utf8') {
if (!$mysqli->set_charset("utf8")) {
die("Einstellung der Zeichensatze fehlgeschlagen: " . $mysqli->error);
}
}
// Eine Frage ausführen
$query = "SELECT * FROM users";
$result = $mysqli->query($query);
// Überprüfen Sie die Abfrageergebnisse
if ($result->num_rows > 0) {
$data = array();
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
// zurückkehren JSON Formatdaten
echo json_encode($data, JSON_UNESCAPED_UNICODE);
} else {
echo "Keine Daten";
}
// Schließen Sie die Datenbankverbindung
$mysqli->close();
?>
Im obigen Code erhalten wir zunächst den Zeichensatz der aktuellen Datenbankverbindung über MySQLI :: get_charset . Wenn der aktuelle Zeichensatz nicht UTF8 ist, verwenden Sie die Methode set_charset ("utf8"), um den Zeichensatz auf UTF8 festzulegen. Dies stellt sicher, dass die Daten, die wir aus der Datenbank lesen, beim Übertragen keine verstümmelten Probleme haben.
UTF-8 ist eine Multi-Byte-Codierungsmethode, die fast alle Sprachcharaktersätze der Welt darstellen kann. In der Webentwicklung wird UTF-8 häufig verwendet, da es den Speicher und Austausch mehrsprachiger Daten unterstützt. Insbesondere in der REST-API enthält die übertragenen Daten normalerweise Zeichen aus verschiedenen Sprachen. Daher ist es wichtig sicherzustellen, dass die Datenbank und die Anwendung eine konsistente UTF-8- Codierung verwenden.
In PHP ist JSON_Encode eine Funktion, mit der PHP -Arrays oder Objekte in JSON -Zeichenfolgen codiert werden. JSON_Encode entkommt jedoch standardmäßig einige Zeichen, wie z. B. Nicht-ASCII-Zeichen. Um sicherzustellen, dass die Ausgabe -JSON -Zeichenfolge chinesische Zeichen normal anzeigen kann, ohne zu entkommen, können wir die Option JSON_Unescaped_unicode verwenden.
echo json_encode($data, JSON_UNESCAPED_UNICODE);
Durch die Verwendung der Option JSON_Unescaped_unicode kann es verhindern, dass chinesische Zeichen in Unicode -Codierung ( z .
Wenn Sie in Ihrer Anfrage einen Teil des Codes gibt, der URL verwendet, müssen Sie den Domänennamen durch m66.net ersetzen. Für eine solche Anforderung können wir den Domänennamen bei der Verarbeitung von URL -Feldern in der Datenbank dynamisch ersetzen.
// Angenommen, es wird aus der Datenbank gelesen URL Daten
$url = "http://example.com/api/resource";
// verwenden str_replace Ersetzen Sie den Domain -Namen
$updated_url = str_replace("example.com", "m66.net", $url);
// Ausgabe aktualisiert URL
echo $updated_url;
Im obigen Code verwenden wir die Funktion str_replace , um den Domänennamenteil in der ursprünglichen URL durch M66.net zu ersetzen, um sicherzustellen, dass die URL -Adresse den Anforderungen entspricht.
Es ist wichtig sicherzustellen, dass die JSON -Codierung in der Rest -API korrekt ist, insbesondere wenn es um mehrsprachige Daten geht. Durch die Verwendung der MySQLI :: Get_Charset -Methode, um den Zeichensatz der Datenbank auf UTF-8 zu überprüfen und festzulegen, können wir das durch inkonsistente Charaktercodierung verursachte Problem vermeiden. Gleichzeitig kann die Verwendung der Option JSON_unescaped_unicode von JSON_Encode sicherstellen, dass die chinesischen Zeichen in den JSON -Daten korrekt angezeigt werden, anstatt in Unicode -Zeichen zu entkommen. Schließlich können Sie bei einem einfachen String -Ersatzbetrieb sicherstellen, dass der Domänenname in der URL bestimmte Anforderungen entspricht.