Heim >Backend-Entwicklung >PHP-Problem >Was tun, wenn die chinesische PHP-Speicherdatenbank fehlerhaft ist?

Was tun, wenn die chinesische PHP-Speicherdatenbank fehlerhaft ist?

PHPz
PHPzOriginal
2023-04-10 09:35:46580Durchsuche

Wenn Sie in PHP chinesische Zeichen zum Speichern in der Datenbank verwenden, werden möglicherweise verstümmelte Zeichen angezeigt. Dies liegt daran, dass die Codierung der Datenbank und der Webseite inkonsistent ist, was dazu führt, dass die Daten falsch gespeichert werden. Hier sind einige Lösungen.

  1. Einstellungen für die Datenbankkodierung

Bestätigen Sie zunächst, ob die Kodierung der Datenbank UTF-8 ist (oder eine andere Kodierung, die Chinesisch unterstützt). Wenn nicht, können Sie die Kodierung in der Datenbank auf UTF-8 einstellen.

Wenn Sie eine MySQL-Datenbank verwenden, müssen Sie beim Erstellen der Datenbank und der Datentabelle die Kodierung angeben:

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE tablename (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
    age INT(3)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. PHP-Kodierungseinstellungen

Zweitens stellen Sie die Kodierung im PHP-Skript auf UTF-8 ein:

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

kann auch in PHP konfiguriert werden. In der Datei php.ini einstellen:

default_charset = "utf-8"
  1. Datenbankverbindungseinstellungen

Beim Herstellen einer Verbindung zur Datenbank müssen Sie außerdem die Kodierung auf UTF-8 einstellen. Wenn Sie PDO verwenden, um eine Verbindung zur Datenbank herzustellen, können Sie Folgendes schreiben:

$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";
$dbh = new PDO($dsn, $user, $password);

Wenn Sie MySQLi verwenden, um eine Verbindung zur Datenbank herzustellen, können Sie Folgendes schreiben:

$mysqli = new mysqli("localhost", "user", "password", "dbname");
mysqli_set_charset($mysqli, "utf8mb4");
  1. Konvertierung der Datenkodierung

Wenn nichts davon zutrifft Methoden können das Problem lösen, dann ist es möglicherweise die in der Datenbank gespeicherte Zeichenfolge. Die Codierung stimmt nicht mit der Datenbankcodierung überein und erfordert eine Codierungskonvertierung. Die Konvertierung kann mit der PHP-Funktion iconv oder der Funktion mb_convert_encoding erfolgen.

$str = "你好";
$str = iconv('gbk', 'utf-8', $str);
//或
$str = mb_convert_encoding($str, 'utf-8', 'gbk');

Zusammenfassung

Stellen Sie beim Speichern chinesischer Zeichen in der Datenbank in PHP sicher, dass die Datenbank- und Webseitenkodierungen konsistent sind, und stellen Sie die Kodierung in der Verbindungsdatenbank und im PHP-Skript auf UTF-8 ein. Wenn verstümmelte Zeichen angezeigt werden, versuchen Sie es mit der Kodierungskonvertierung. Ich hoffe, diese Methoden können Ihnen bei der Lösung des Problems helfen.

Das obige ist der detaillierte Inhalt vonWas tun, wenn die chinesische PHP-Speicherdatenbank fehlerhaft ist?. 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