Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Werte in PHP Ajax

So lösen Sie das Problem verstümmelter Werte in PHP Ajax

藏色散人
藏色散人Original
2020-09-01 10:31:352545Durchsuche

Lösung für den von PHP Ajax übergebenen verstümmelten Wert: 1. Verwenden Sie die UTF8-Kodierung für die Vorder- und Rückseiten und die Datenbank . Verwenden Sie die ICONV-Funktion. Konvertieren Sie die Codierung der aus der Datenbank abgerufenen Zeichenfolge.

So lösen Sie das Problem verstümmelter Werte in PHP Ajax

Empfohlen: „PHP-Video-Tutorial

Bei der PHP-Website-Entwicklung ist Ajax eine häufig verwendete Technologie, um die Benutzererfahrung zu verbessern. Anfänger stoßen jedoch häufig auf Ajax. Das Problem verstümmelter chinesischer Schriftzeichen Gibt es eine Möglichkeit, das Problem verstümmelter chinesischer Zeichen zu lösen, wenn sie von PHP AJAX übergeben werden?

Wir wissen, dass sich die Ajax-Technologie aus JavaScript entwickelt hat und JavaScript die UTF-8-Codierung verwendet. Wenn die aktuelle Hintergrundseite GBK oder eine andere Codierung verwendet und keine Codierungskonvertierung durchgeführt wird, tritt das Problem verstümmelter chinesischer Zeichen auf.

Lösung für verstümmelte chinesische Zeichen bei der PHP-Ajax-Wertübertragung

Methode 1. Die Vorder- und Rückseite sowie die Datenbank verwenden einheitlich die UTF8-Codierung. Dies ist die einfachste Methode.

 Methode 2: Wenn die Website eine Codierung wie GBK/GB2312 übernommen hat, gibt es zwei Situationen:

 1. Wenn Ajax chinesische Zeichen sendet und PHP (Hintergrundprogramm) verstümmelte Zeichen empfängt, verwenden Sie die Konvertierungsfunktion zwischen GBK und UTF8 Die empfangene Zeichenfolge wird codiert und dann in der entsprechenden Datenbank gespeichert. Es wird davon ausgegangen, dass die von der Datenbank verwendete Codierung GBK oder GB2312 ist. Wenn die konfigurierte PHP-Betriebsumgebung die ICONV-Funktion unterstützt, können Sie auch die ICONV-Funktion zur Durchführung der Codierungskonvertierung verwenden und dann in der Datenbank speichern.

mysql_query("set names gb2312");

kann das chinesische verstümmelte Problem der Ajax-Wertübertragung lösen.

  2. Wenn PHP chinesische Zeichen sendet und Ajax (Titelseite) verstümmelte Zeichen empfängt, können Sie auch die ICONV-Funktion verwenden, um die Codierung der aus der Datenbank entnommenen Zeichenfolge zu konvertieren und den Wert dann an die Ajax-Rezeption zu übergeben ist Antworttext. Oder fügen Sie einfach

header('Content-type: text/html;charset=gb2312');

vor dem PHP-Ausgabezeichenstrom (Backend-Programm) hinzu. Besonderer Hinweis: Wenn Sie Ajax für mehrstufige Verknüpfungen verwenden (z. B. Provinz-Stadt-Verknüpfungen), verwenden Sie das interaktive XML-Formular. Außerdem müssen Sie vor der XML-Ausgabe einen Header hinzufügen.

 Gleichzeitig wird die Konvertierungsfunktion von GB2312 und UTF8 veröffentlicht, sodass jeder eine andere Lösung finden kann, wenn er auf das Problem der verstümmelten chinesischen Ajax-Zeichen stößt.

function gb2utf8($gb,$filename)
{
    if(!trim($gb))
    return $gb;
    //$filename="gb2312.txt";
    $tmp=file($filename);
    $codetable=array();
    while(list($key,$value)=each($tmp))
    $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
    $utf8="";
    while($gb)
    {
        if (ord(substr($gb,0,1))>127)
        {
            $thisgb=substr($gb,0,2);
            $gb=substr($gb,2,strlen($gb));
            $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080]));
        }
        else
        {
            $gb=substr($gb,1,strlen($gb));
            $utf8.=u2utf8(substr($gb,0,1));
        }
    }
    $ret="";
    for($i=0;$i<strlen($utf8);$i+=3)
    $ret.=chr(substr($utf8,$i,3));
    return $ret;
}
function u2utf8($c)
{
    for($i=0;$i<count($c);$i++)
    $str="";
    if ($c < 0x80) {
        $str.=$c;
    }
    else if ($c < 0x800) {
        $str.=(0xC0 $c>>6);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x10000) {
        $str.=(0xE0 $c>>12);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x200000) {
        $str.=(0xF0 $c>>18);
        $str.=(0x80 $c>>12 & 0x3F);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    return $str;
}

Hinweis: Für diese Funktion ist die Verwendung der chinesischen Kodierungstabelle GB2312 erforderlich. Klicken Sie zum Herunterladen hier. Da gb2312 verwendet wird, können einige seltene Wörter während der Konvertierung verstümmelt werden.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Werte in PHP Ajax. 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