In der PHP -Entwicklung verwenden wir im Umgang mit Multibyte -Zeichenfolgen häufig Mbstring -Erweiterungen, um die Richtigkeit der Charaktercodierung zu gewährleisten, insbesondere bei der Verarbeitung mehrsprachiger Websites oder der Verarbeitung von Daten von verschiedenen Clients. Um die Zeichencodierung in Anforderungen korrekt zu verarbeiten, sind MB_HTTP_INPUP () und MB_Get_info () sehr praktische Werkzeuge.
In diesem Artikel wird detailliert erklärt, wie sie in HTTP -Anforderungen durch diese beiden Funktionen Charaktercodierungen erhalten und deren Verwendungen und Unterschiede erläutert.
Die Funktion mb_http_input () kann verwendet werden, um die Zeichencodierung der HTTP -Eingabe zu erkennen. Zu den Eingabetypen, die es erkennen kann, gehören:
'G' : Daten abrufen
'P' : Daten posten
'C' : Cookie -Daten
'S' : String -Eingabe (alle)
'I' : Automatische Erkennung (Priorität: Post> Get> Cookie)
<?php
// Prüfen POST Zeichenkodierung von Daten
$post_encoding = mb_http_input('P');
if ($post_encoding) {
echo "POST Die angeforderte Zeichenkodierung ist: {$post_encoding}\n";
} else {
echo "未能Prüfen到 POST Angeforderte Codierung\n";
}
?>
Wenn Sie Daten in einem Formular einreichen, zum Beispiel:
<form method="post" action="https://gitbox.net/submit.php">
<input type="text" name="username">
<input type="submit" value="einreichen">
</form>
Das obige PHP-Skript kann die von Ihren übermittelte Postdaten verwendete Codierung (wie UTF-8 oder EUC-JP) erkennen.
mb_get_info () ist eine multifunktionale diagnostische Funktion, mit der die aktuellen Konfigurationsinformationen von Mbstring zurückgegeben werden können. Wenn während des Anrufs keine Parameter übergeben werden, werden alle Informationen zurückgegeben. Sie können auch einen bestimmten Projektnamen übergeben, um eine bestimmte Einstellung abzufragen, z. B. "http_input" .
<?php
// Holen Sie sich alles mbstring Information
$mb_info = mb_get_info();
echo "Aktuell HTTP Der Eingabescode wird auf eingestellt: " . $mb_info['http_input'] . "\n";
// Oder einfach bekommen http_input Teil
$http_input = mb_get_info("http_input");
echo "HTTP Geben Sie die Codierungseinstellungen ein: {$http_input}\n";
?>
HINWEIS: MB_Get_info ("http_input") gibt die Standardeingangscodierungseinstellungen von Mbstring (wie automatisch , utf-8 usw.) und nicht die tatsächliche Anforderungsdatencodierung zurück. Daher ist mb_http_input () die erste Wahl für die Überprüfung "Was in der tatsächlichen Anforderung verwendet wird".
Wenn Sie sicherstellen möchten, dass der Server Daten vom Client korrekt empfangen und verarbeiten kann, ist Folgendes eine praktische Anwendungsmethode:
<?php
// Setzen Sie die Standardcharaktercodierung
mb_internal_encoding("UTF-8");
mb_http_input("auto");
// Erhalten POST Die tatsächliche Charaktercodierung wurde angefordert
$actual_encoding = mb_http_input('P');
// Erhalten mbstring Aktuell HTTP Geben Sie Einstellungen ein
$configured_encoding = mb_get_info("http_input");
echo "Der tatsächliche Anforderungscode ist: {$actual_encoding}\n";
echo "mbstring Konfiguriert HTTP Geben Sie Einstellungen ein为: {$configured_encoding}\n";
?>
Dieser Code hilft Entwicklern dabei, verstümmelte Zeichen zu beheben: Unabhängig davon, ob die vom Client gesendete Codierung nicht mit der Serverkonfiguration übereinstimmt, oder die Mbstring -Einstellung überschreibt das Standardverhalten nicht.
Verwenden Sie mb_http_input (), um die in der Anforderung tatsächlich verwendete Zeichencodierung zu erhalten.
Verwenden Sie mb_get_info () , um die aktuelle Konfiguration von Mbstring zu erhalten, einschließlich der Standard -HTTP -Eingabecodierung.
Die Kombination der beiden ermöglicht ein umfassenderes Verständnis und Debuggen von Codierungsproblemen, um sicherzustellen, dass die Anwendung die Benutzereingaben korrekt verarbeiten kann.
Es wird empfohlen, dass MBString bei der Verarbeitung mehrsprachiger Websites oder internationaler Formdaten korrekt konfiguriert und korrekt konfiguriert ist.
Debuggen Sie das Problem der verstümmelten Charaktercode oder entwickeln Sie Anwendungen mit verschiedenen Orten?