Heim > Artikel > Backend-Entwicklung > Gründe und Lösungen für verstümmelte chinesische Schriftzeichen in PHP-URL-Parametern [Zusammenfassung]
PHP ist eine weit verbreitete Entwicklungssprache, mit der Webanwendungen und dynamische Webseiten erstellt werden können. Bei der Verwendung von PHP treten jedoch verschiedene Probleme auf. Eines der schwierigsten Probleme ist das Problem verstümmelter chinesischer Parameter in der URL. In diesem Artikel untersuchen wir die Grundursache dieses Problems und wie man es lösen kann.
Im HTTP-Protokoll besteht die URL aus mehreren Teilen, einschließlich Protokoll, Hostname, Dateipfad und Abfragezeichenfolge usw. Wenn eine URL chinesische Zeichen enthält, müssen diese Zeichen codiert werden, um sicherzustellen, dass Server und Browser sie richtig interpretieren können. Diese Kodierungskonvertierung verwendet eine Methode namens URL-Kodierung. Bei der URL-Kodierung werden alle nicht alphanumerischen Zeichen in das Format eines Prozentzeichens (%), gefolgt von zwei hexadezimalen Ziffern, umgewandelt.
Zum Beispiel wird das chinesische Schriftzeichen „安“ durch die UTF-8-Kodierung als „E5 AE 89“ dargestellt. Sobald es URL-kodiert ist, wird es zu „%E5%AE%89“. Der Browser sendet diese Codierung an den Server, um ihn anzuweisen, „%E5%AE%89“ in der Abfragezeichenfolge anstelle des ursprünglichen chinesischen Zeichens „安“ zu übergeben.
Wenn der PHP-Code jedoch versucht, die in der URL übergebenen chinesischen Parameter abzurufen, analysiert er sie möglicherweise nicht richtig, was zu verstümmelten Zeichen führt. Dies liegt daran, dass PHP standardmäßig den ISO-8859-1-Zeichensatz verwendet, um Parameter in GET-Anfragen zu analysieren. Chinesische Zeichen im UTF-8-Codierungsformat sind im ISO-8859-1-Zeichensatz nicht vorhanden, daher analysiert PHP sie in verstümmelte Zeichen.
Um das Problem verstümmelter chinesischer Parameter in URLs zu lösen, müssen wir die Kodierungsmethode der Parameter kennen und sie in ein erkennbares Kodierungsformat konvertieren von PHP. Hier sind zwei Methoden:
Die manuelle Konvertierung der Kodierung ist eine der einfachsten Möglichkeiten, dieses Problem zu lösen. Wir können die in PHP integrierten Funktionen zur Kodierungskonvertierung verwenden. Für das oben erwähnte chinesische Schriftzeichen „安“ können wir beispielsweise den folgenden Code verwenden, um es vom UTF-8-Kodierungsformat in das ISO-8859-1-Kodierungsformat zu konvertieren:
$url_param = '%E5%AE%89'; $decoded_param = urldecode($url_param); $encoded_param = mb_convert_encoding($decoded_param, 'ISO-8859-1', 'UTF-8'); echo $encoded_param; // 输出:安
In diesem Code verwenden wir zuerst urldecode( ) Die Funktion konvertiert URL-codierte Parameter zurück in einfachen Text. Anschließend verwenden wir die Funktion mb_convert_encoding(), um den Text von der UTF-8-Kodierung in die ISO-8859-1-Kodierung zu konvertieren und das Ergebnis in der Variablen $encoded_param zu speichern.
Wenn Sie die Kodierungskonvertierung nicht manuell durchführen möchten, können wir auch die Serverkonfiguration ändern, um URL-Parameter automatisch vom UTF-8-Kodierungsformat in das ISO-8859-1-Kodierungsformat zu konvertieren . Beim Apache-Server können wir dies im Web-Root-Verzeichnis erreichen, indem wir die .htaccess-Datei ändern. Fügen Sie der .htaccess-Datei die folgende Zeile hinzu:
AddDefaultCharset ISO-8859-1 php_value default_charset "iso-8859-1"
Dadurch wird Apache angewiesen, beim Parsen der Anfrage das ISO-8859-1-Kodierungsformat zu verwenden und dieses Kodierungsformat an PHP zu übergeben, damit PHP die chinesischen Parameter in der korrekt analysieren kann GET-Anfrage.
In diesem Artikel haben wir die Grundursache des Problems verstümmelter chinesischer Parameter in URLs untersucht und zwei Lösungen vorgestellt. Das manuelle Konvertieren des Codierungsformats von URL-Parametern mag manchmal mühsam erscheinen, ist aber die einfachste und zuverlässigste Lösung. Andererseits können wir durch Ändern der Serverkonfiguration URL-Parameter automatisch vom UTF-8-Kodierungsformat in das ISO-8859-1-Kodierungsformat konvertieren, dies erfordert jedoch entsprechende Serverkonfiguration und Berechtigungen. Unabhängig von der verwendeten Methode können wir das Problem verstümmelter chinesischer Parameter in URLs lösen und sicherstellen, dass unsere Webanwendungen normal funktionieren, solange wir die Kenntnisse der URL-Codierung und der PHP-Codierung vollständig verstehen.
Das obige ist der detaillierte Inhalt vonGründe und Lösungen für verstümmelte chinesische Schriftzeichen in PHP-URL-Parametern [Zusammenfassung]. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!