Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie verstümmelte PHP-Strings

So lösen Sie verstümmelte PHP-Strings

藏色散人
藏色散人Original
2021-11-02 09:22:285159Durchsuche

Lösungen für verstümmelte PHP-Strings: 1. Ersetzen Sie gb2312 durch utf-8 über iconv. 2. Konvertieren Sie die Codierung über die Funktion mb_convert_encoding.

So lösen Sie verstümmelte PHP-Strings

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie löst man verstümmelte PHP-Strings? Probleme mit der Zeichenkodierungskonvertierung der PHP-Funktion iconv()

Die Funktionsbibliothek iconv in PHP kann die Konvertierung zwischen verschiedenen Zeichensätzen durchführen und ist eine unverzichtbare Grundfunktionsbibliothek in der PHP-Programmierung, aber manchmal transkodiert iconv einige Daten nicht kein Grund. Beispielsweise tritt beim Konvertieren des Zeichens „—“ in gb2312 ein Fehler auf.

Lassen Sie uns langsam einen Blick auf die Verwendung dieser Funktion werfen.

Die einfachste Anwendung, ersetzen Sie gb2312 durch utf-8:

$text=iconv("GB2312","UTF-8",$text);

Wenn Sie bei der Verwendung von $text=iconv("UTF-8","GB2312",$text) auf Sonderzeichen stoßen, wie zum Beispiel: „-“, „.“ und andere Zeichen in englischen Namen, die Konvertierung ist fehlerhaft. Der Text nach diesen Zeichen kann nicht weiter konvertiert werden.

Um dieses Problem zu lösen, können Sie den folgenden Code verwenden:

$text=iconv("UTF-8","GBK",$text);

Sie haben richtig gelesen, so einfach ist das: Verwenden Sie nicht gb2312, sondern schreiben Sie es einfach als GBK.

Es gibt eine andere Methode, den zweiten Parameter, //IGNORE hinzufügen, Fehler ignorieren, wie folgt:

iconv("UTF-8","GB2312//IGNORE",$data);

Es ​​gibt keinen spezifischen Vergleich zwischen diesen beiden Methoden, ich denke, dass die erste Methode (GBK statt gb2312) besser ist.

Iconv()-Beschreibung im PHP-Handbuch:

iconv
(PHP 4 >= 4.0.5, PHP 5)
iconv – Convert string to requested character encoding
Description
string iconv ( string in_charset, string out_charset, string str )
Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure.
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.

Wenn Sie diese Funktion zum Konvertieren der Zeichenfolgenkodierung verwenden, müssen Sie darauf achten, dass die Zeichenfolge möglicherweise abgeschnitten wird, wenn Sie utf-8 in gb2312 konvertieren. Zu diesem Zeitpunkt können Sie das Problem mit der folgenden Methode lösen:

$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));

Das heißt, fügen Sie den roten Teil zum zweiten Parameter hinzu. Dies bedeutet: Wenn in der Zielcodierung keine Zeichen gefunden werden, die mit der Quellcodierung übereinstimmen, werden ähnliche Zeichen angezeigt zur Konvertierung ausgewählt. Sie können hier auch den Parameter //IGNORE verwenden, um Zeichen zu ignorieren, die nicht konvertiert werden können.

ignore bedeutet, Fehler während der Konvertierung zu ignorieren. Ohne den Ignorierparameter können nicht alle auf dieses Zeichen folgenden Zeichenfolgen gespeichert werden.

iconv ist nicht die Standardfunktion von PHP, sondern auch ein standardmäßig installiertes Modul. Es muss installiert werden, bevor es verwendet werden kann.

Wenn es Windows2000+php ist, können Sie die php.ini-Datei ändern und das „;“ vor der Erweiterung=php_iconv.dll entfernen. Gleichzeitig müssen Sie die iconv.dll in Ihre ursprüngliche PHP-Installationsdatei kopieren Ihr winnt/system32 (wenn Ihre DLL auf dieses Verzeichnis verweist). Verwenden Sie in der Linux-Umgebung die statische Installation und fügen Sie bei der Konfiguration ein zusätzliches Element --with-iconv hinzu. Das Element iconv ist in phpinfo zu sehen. (Linux7.3+Apache4.06+php4.3.2).

Einführung in die Funktionen mb_convert_encoding und iconv

mb_convert_encoding Diese Funktion wird zum Konvertieren von Kodierungen verwendet. Früher habe ich das Konzept der Programmcodierung nicht verstanden, aber jetzt scheine ich es ein wenig zu verstehen. Bei Englisch gibt es jedoch im Allgemeinen keine Kodierungsprobleme, nur bei chinesischen Daten tritt dieses Problem auf. Wenn Sie beispielsweise Zend Studio oder Editplus zum Schreiben eines Programms verwenden, verwenden Sie die GBK-Codierung. Wenn die Daten in die Datenbank eingegeben werden müssen und die Datenbankcodierung utf8 ist, müssen die Daten codiert und konvertiert werden, andernfalls wird dies der Fall sein werden beim Betreten der Datenbank verstümmelt.

Erstellen Sie ein GBK zu UTF-8:

<?php 
header("content-Type: text/html; charset=Utf-8"); 
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); 
?>

Lass uns ein GB2312 zu Big5 erstellen:

<?php 
header("content-Type: text/html; charset=big5"); 
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 
?>

Aber um die obige Funktion nutzen zu können, müssen Sie sie installieren, aber zuerst die MBstring-Erweiterungsbibliothek aktivieren.

string mb_convert_encoding (string str, string to_encoding [, gemischt von_encoding]) Sie müssen zuerst die mbstring-Erweiterungsbibliothek aktivieren; und es basiert auf Der Inhalt wird automatisch erkannt, aber die Ausführungseffizienz ist viel schlechter als bei iconv; Der zweite Parameter kann auch zwei Suffixe hinzufügen: //TRANSLIT und //IGNORE, wobei //TRANSLIT Zeichen, die nicht direkt konvertiert werden können, automatisch in ein oder mehrere ungefähre Zeichen umwandelt, //IGNORE Zeichen ignoriert, die nicht konvertiert werden können, und die Standardeinstellung Der Effekt besteht darin, mit der ersten unzulässigen Zeichenkürzung zu beginnen.

Verwenden Sie im Allgemeinen iconv nur, wenn Sie die ursprüngliche Codierung nicht ermitteln können oder wenn iconv nach der Konvertierung nicht normal angezeigt werden kann.

$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie verstümmelte PHP-Strings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Was bedeutet $this in PHP?Nächster Artikel:Was bedeutet $this in PHP?