Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem, dass PHP verstümmelte chinesische Zeichen in die Datenbank schreibt

So lösen Sie das Problem, dass PHP verstümmelte chinesische Zeichen in die Datenbank schreibt

藏色散人
藏色散人Original
2021-09-25 10:29:263680Durchsuche

Lösung für von PHP in die Datenbank geschriebene verstümmelte chinesische Zeichen: 1. Erstellen Sie eine Datenbank und legen Sie die Kodierung „utf8_general_ci“ fest. 2. Verwenden Sie PHP, um die Datenbank zu lesen und zu schreiben, und legen Sie dann „mysql_query(“set name „utf8““ fest. ");".

So lösen Sie das Problem, dass PHP verstümmelte chinesische Zeichen in die Datenbank schreibt

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

Wie löst man das chinesische verstümmelte Problem, wenn PHP in die Datenbank schreibt?

PHP schreibt in die Problem mit der chinesischen verstümmelten Datenbank

PHP-Seitenkonvertierung in UTF-8-Kodierungsproblem

1. Fügen Sie am Anfang des Codes eine Zeile hinzu:

header("Content-Type: text/html;charset=utf-8");

2. Klicken Sie auf das Menü des Editors: „Datei“. -> „Speichern unter“, um die aktuelle Dateikodierung anzuzeigen. Stellen Sie sicher, dass die Dateikodierung UTF-8 ist.
Wenn es sich um ANSI handelt, müssen Sie die Kodierung in UTF-8 ändern.
3. PHP-Datei-Header-Stücklistenproblem:
PHP-Dateien dürfen keine Stücklisten-Tags haben.
Andernfalls ist die Sitzung nicht verwendbar und es werden ähnliche Eingabeaufforderungen angezeigt:
Warnung: session_start() [function.session-start]: Kann nicht gesendet werden Session-Cache-Limiter – Header bereits gesendet
Dies liegt daran, dass bei der Ausführung von session_start() die gesamte Seite keine Ausgabe haben kann, aber da das BOM-Tag auf der vorherigen PHP-Seite vorhanden ist,
PHP betrachtet dieses BOM-Tag als Ausgabe, sodass etwas schief gelaufen ist !
Daher muss das BOM-Tag auf der PHP-Seite gelöscht werden
Methode zum Löschen dieses BOM-Tags:
1. Sie können die Datei mit Dreamweaver öffnen und erneut speichern, um das BOM-Tag zu entfernen!
2. Sie können die Datei mit EditPlus öffnen und im Menü „Einstellungen“ -> „Datei“ -> „UTF-8-Identität“ auf „Signaturen immer löschen“ einstellen.
Anschließend die Datei speichern. und Sie können das Stücklisten-Tag entfernen!
4. UTF-8-Codierungsproblem, wenn PHP Dateien als Anhänge speichert:
Wenn PHP Dateien als Anhänge speichert, muss der Dateiname GB2312-codiert sein.
Andernfalls wird der Dateiname verstümmelt, wenn Chinesisch im Dateinamen enthalten ist:
Wenn Ihr PHP selbst ist eine Datei im UTF-8-Kodierungsformat.
Sie müssen die Dateinamenvariable von UTF-8 in GB2312 konvertieren:

iconv("UTF-8", "GB2312", "$filename");

Verwenden Sie ein Programm, um die Methode zum Abfangen von Zeichen zu veranschaulichen.


function utf8_substr($str,$len) 
{ 
  for($i=0;$i<$len;$i++) 
  { 
    $temp_str=substr($str,0,1); 
    if(ord($temp_str) > 127){ 
      $i++; 
    if($i<$len){ 
      $new_str[]=substr($str,0,3); 
      $str=substr($str,3); 
      } 
    }else { 
    $new_str[]=substr($str,0,1); 
    $str=substr($str,1); 
    } 
  } 
  return join($new_str); 
}

MYSQL-Datenbank verwendet UTF -8-Kodierung Frage

1. Verwenden Sie phpmyadmin, um eine Datenbank und eine Datentabelle zu erstellen.

Stellen Sie beim Erstellen der Datenbank bitte „Organisation“ auf: „utf8_general_ci“ ein oder führen Sie die Anweisung aus:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Beim Erstellen der Datentabelle: Wenn das Feld ist um Chinesisch zu speichern. Wenn ja, müssen Sie „Organisation“ auf „utf8_general_ci“ setzen.

Wenn das Feld Englisch oder Zahlen speichert, ist die Standardeinstellung in Ordnung.
Die entsprechende SQL-Anweisung, zum Beispiel:

CREATE TABLE `test` ( 
`id` INT NOT NULL , 
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM ;

2. Verwenden Sie PHP, um die Datenbank zu lesen und zu schreiben.

Nachdem Sie eine Verbindung zur Datenbank hergestellt haben:

$connection = mysql_connect($host_name, $host_user, $host_pass);

Fügen Sie zwei Zeilen hinzu:

mysql_query("set character set &#39;utf8&#39;");//读库 
mysql_query("set names &#39;utf8&#39;");//写库 
//其实读写都可以只加入
mysql_query("set names &#39;utf8&#39;");

Dann können Sie die MYSQL-Datenbank normal lesen und schreiben .

Die verwendete Umgebung ist appserv-win32-2.5.10. Bei der Installation dieses Pakets wird die Standard-utf8-Kodierung verwendet.

Schreiben Sie beim Schreiben der Datenbankverbindungsdatei:

$conn = mysql_connect("$host","$user","$password"); 
mysql_query("SET NAMES &#39;UTF8&#39;"); 
mysql_select_db("$database",$conn);

Achten Sie dann beim Erstellen der Seite auf diesen Satz:

061e324d66bbfb6dadacc326c20e9c8c

Auf diese Weise ist alles normal, unabhängig davon, welche Chinesen in die Datenbank eingegeben oder auf der Seite angezeigt werden.
In der DW CS4-Version wird standardmäßig auch die utf8-Seite generiert.
Ähnlich, wenn Sie die Datenbankverbindungsdatei am Anfang schreiben: mysql_query("SET NAMES 'GBK'");

Dann sollte sich auch die Seite entsprechend ändern:


<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

Empfohlenes Lernen: „

PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass PHP verstümmelte chinesische Zeichen in die Datenbank schreibt. 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