Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro

Wissensdatenbank

Startseite Wissensdatenbank Allgemein PHP SQL Problem mit türkischen Zeic...

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

PHP SQL Problem mit türkischen Zeichen: 20 Lösungsansatze

Was ist das PHP SQL Türkische Zeichen Problem?

In Webanwendungen, die mit PHP und MySQL arbeiten, verursachen türkische Zeichen (ş, ç, ğ, ü, ö, ı, Ş, Ç, Ğ, Ü, Ö, İ) oft Probleme. Diese Probleme äußern sich als Zeichen, die falsch in der Datenbank gespeichert oder auf der Webseite fehlerhaft angezeigt werden. Grundsätzlich liegt die Ursache dieser Probleme in der Inkompatibilität verschiedener Zeichenkodierungen (Character Encoding). Beispielsweise kann die Datenbank eine andere Kodierung verwenden als die PHP-Skripte oder HTML-Seiten. Diese Inkompatibilität führt zur Beschädigung der Zeichen.

Warum treten türkische Zeichenprobleme auf?

Die Hauptursachen für das türkische Zeichenproblem sind:

  • Unterschiedliche Zeichenkodierungen: MySQL, PHP und HTML können unterschiedliche Zeichenkodierungen verwenden. Zu den am häufigsten verwendeten Kodierungen gehören UTF-8, Latin1 (ISO-8859-1) und ISO-8859-9 (Latin5). Die Inkompatibilität dieser Kodierungen führt zu Problemen.
  • Datenbankverbindungseinstellungen: Die Zeichenkodierung der Verbindung zwischen PHP und der Datenbank ist möglicherweise nicht korrekt konfiguriert.
  • HTML-Seitenkodierung: Die Zeichenkodierung der HTML-Seite ist möglicherweise nicht korrekt angegeben. Der Browser interpretiert die Seite möglicherweise mit einer falschen Kodierung.
  • PHP-Skriptkodierung: Das PHP-Skript selbst wurde möglicherweise mit einer anderen Kodierung gespeichert.
  • Datenbanktabellen- und Spaltenkodierungen: Für Datenbanktabellen und -spalten können unterschiedliche Zeichenkodierungen definiert sein.

Welche Zeichenkodierungen sollte ich verwenden?

Der beste Ansatz zur Lösung türkischer Zeichenprobleme ist die Verwendung der Zeichenkodierung UTF-8 überall. UTF-8 ist eine Implementierung des Unicode-Zeichensatzes und unterstützt fast alle Sprachen und Zeichen. Daher hat sich UTF-8 zum Standard für moderne Webanwendungen entwickelt.

Die folgende Tabelle vergleicht verschiedene Zeichenkodierungen hinsichtlich der Unterstützung türkischer Zeichen:

Zeichenkodierung Unterstützung türkischer Zeichen Vorteile Nachteile
UTF-8 Vollständig Universell, unterstützt alle Sprachen, moderner Webstandard Kann mehr Speicherplatz verbrauchen (für einige Zeichen)
Latin1 (ISO-8859-1) Begrenzt (einige Zeichen fehlen) Weit verbreitet, verbraucht weniger Speicherplatz Unterstützt nicht alle türkischen Zeichen
Latin5 (ISO-8859-9) Gut (unterstützt die meisten Zeichen) Für Türkisch optimiert Nicht universell, kann in anderen Sprachen zu Problemen führen

Wie stelle ich die Zeichenkodierung der Datenbank (MySQL) ein?

Führen Sie die folgenden Schritte aus, um die Zeichenkodierung der MySQL-Datenbank einzustellen:

  1. Datenbank erstellen: Geben Sie beim Erstellen der Datenbank die UTF-8-Zeichenkodierung an.
  2. Tabelle erstellen: Geben Sie auch beim Erstellen von Tabellen die UTF-8-Zeichenkodierung an.
  3. Spalte erstellen: Geben Sie auch beim Erstellen von Spalten die UTF-8-Zeichenkodierung an.
  4. MySQL-Verbindungs-Kodierung: Stellen Sie sicher, dass die Verbindung zwischen PHP und MySQL auf UTF-8 eingestellt ist.

Schritt 1: Datenbank erstellen

CREATE DATABASE datenbankname CHARACTER SET utf8 COLLATE utf8_turkish_ci;

Hier stellt `utf8_turkish_ci` eine türkische Sortierung (collation) bereit, die Groß- und Kleinschreibung nicht beachtet (case-insensitive).

Schritt 2: Tabelle erstellen

CREATE TABLE tabellenname (
    id INT PRIMARY KEY AUTO_INCREMENT,
    spaltenname VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;

Schritt 3: Spalte erstellen

Um die Zeichenkodierung einer Spalte einer bereits existierenden Tabelle zu ändern, können Sie den folgenden SQL-Befehl verwenden:

ALTER TABLE tabellenname MODIFY spaltenname VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci;

Schritt 4: MySQL-Verbindungs-Kodierung (PHP)

Um beim Aufbau einer Verbindung zwischen PHP und MySQL die UTF-8-Zeichenkodierung anzugeben, können Sie eine der folgenden Methoden verwenden:

Methode 1: `mysqli_set_charset()` Funktion


<?php
$servername = "localhost";
$username = "benutzername";
$password = "passwort";
$dbname = "datenbankname";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindungsfehler: " . $conn->connect_error);
}

// Zeichensatz auf UTF-8 setzen
mysqli_set_charset($conn, "utf8");

// ... andere Operationen ...

$conn->close();
?>

Methode 2: `SET NAMES utf8` Abfrage


<?php
$servername = "localhost";
$username = "benutzername";
$password = "passwort";
$dbname = "datenbankname";

// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindungsfehler: " . $conn->connect_error);
}

// Zeichensatz auf UTF-8 setzen
$conn->query("SET NAMES 'utf8'");

// ... andere Operationen ...

$conn->close();
?>

Wichtiger Hinweis: Für MySQL Version 5.5.3 und höher wird empfohlen, den `utf8mb4` Zeichensatz zu verwenden. `utf8mb4` ist eine erweiterte Version von UTF-8 und unterstützt auch zusätzliche Zeichen wie Emojis. In den obigen Beispielen können Sie `utf8` durch `utf8mb4` und `utf8_turkish_ci` durch `utf8mb4_turkish_ci` ersetzen.

Wie stelle ich die Zeichenkodierung der HTML-Seite ein?

Um die Zeichenkodierung einer HTML-Seite festzulegen, wird das ``-Tag verwendet. Fügen Sie die folgende Zeile in den ``-Bereich ein:

<meta charset="UTF-8">

Dieses Tag teilt dem Browser mit, dass die Seite mit UTF-8 kodiert ist. Für ältere HTML5-Versionen können Sie auch das folgende Tag hinzufügen (aber `` ist ausreichend):

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

Wie stelle ich die Zeichenkodierung für ein PHP-Skript ein?

Das PHP-Skript selbst muss ebenfalls mit UTF-8-Kodierung gespeichert werden. Um dies zu tun, speichern Sie die Datei, indem Sie in den Einstellungen Ihres Texteditors (z. B. VS Code, Sublime Text, Notepad++) die Option "UTF-8 without BOM" (Byte Order Mark) auswählen. BOM ist eine Zeichenfolge, die von einigen Editoren am Anfang der Datei hinzugefügt wird und für die UTF-8-Kodierung nicht erforderlich ist. In einigen Fällen kann sie sogar zu Problemen führen.

Wie behebe ich das Problem mit türkischen Zeichen in Formulardaten?

Wenn Sie Probleme mit türkischen Zeichen in Formulardaten haben, stellen Sie sicher, dass die Zeichenkodierung des HTML-Formulars korrekt eingestellt ist und dass das PHP-Skript ebenfalls als UTF-8 ausgeführt wird. Achten Sie außerdem darauf, keine Konvertierung durchzuführen, wenn Sie Formulardaten abrufen und in die Datenbank speichern.

Beispiel für ein HTML-Formular:


<form action="kaydet.php" method="post">
    <label for="ad">Ihr Name:</label>
    <input type="text" id="ad" name="ad"><br>

    <label for="soyad">Ihr Nachname:</label>
    <input type="text" id="soyad" name="soyad"><br>

    <input type="submit" value="Speichern">
</form>

Beispiel für ein PHP-Skript (kaydet.php):


<?php
$servername = "localhost";
$username = "benutzername";
$password = "passwort";
$dbname = "datenbankname";

// Verbindung herstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung prüfen
if ($conn->connect_error) {
    die("Verbindungsfehler: " . $conn->connect_error);
}

// Zeichensatz auf UTF-8 setzen
mysqli_set_charset($conn, "utf8");

// Formulardaten abrufen
$ad = $_POST["ad"];
$soyad = $_POST["soyad"];

// SQL-Abfrage
$sql = "INSERT INTO tabellenname (ad, soyad) VALUES ('$ad', '$soyad')";

if ($conn->query($sql) === TRUE) {
    echo "Neuer Eintrag erfolgreich erstellt";
} else {
    echo "Fehler: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

Kann die Zeichenkodierung mit einer .htaccess-Datei eingestellt werden?

Ja, die Zeichenkodierung kann auch mit einer `.htaccess`-Datei eingestellt werden. Diese Methode ermöglicht es Ihnen, eine serverseitige Konfiguration vorzunehmen, um eine Zeichenkodierung festzulegen, die für alle PHP-Dateien gilt. Bevor Sie diese Methode verwenden, stellen Sie jedoch sicher, dass Ihr Server `.htaccess`-Dateien unterstützt.

Sie können die UTF-8-Zeichenkodierung festlegen, indem Sie die folgenden Zeilen zur Datei `.htaccess` hinzufügen:

AddDefaultCharset UTF-8
php_value default_charset "UTF-8"

Diese Zeilen weisen den Server an, dass die Standardzeichenkodierung UTF-8 ist und dass PHP ebenfalls die Standardzeichenkodierung UTF-8 verwenden soll.

Wie behebe ich bereits falsch in der Datenbank gespeicherte türkische Zeichen?

Um bereits falsch in der Datenbank gespeicherte türkische Zeichen zu korrigieren, können Sie die folgenden Schritte ausführen:

  1. Datenbank-Backup erstellen: Erstellen Sie vor jeglichen Änderungen ein Backup der Datenbank. Dies ermöglicht es Ihnen, Ihre Daten im Falle eines Fehlers wiederherzustellen.
  2. Falsche Kodierung identifizieren: Ermitteln Sie, mit welcher Kodierung die Daten falsch gespeichert wurden. Häufig wurde eine Kodierung wie Latin1 oder ISO-8859-9 verwendet.
  3. Daten in UTF-8 konvertieren: Konvertieren Sie die Daten mithilfe von SQL-Abfragen in UTF-8.

Beispiel SQL-Abfrage:

Wenn die Daten fälschlicherweise mit der Latin1-Kodierung gespeichert wurden, können Sie die folgende Abfrage verwenden, um sie in UTF-8 zu konvertieren:

UPDATE tabelle_name SET spalte_name = CONVERT(CAST(CONVERT(spalte_name USING latin1) AS BINARY) USING utf8);

Diese Abfrage konvertiert die Daten in der Spalte `spalte_name` zuerst von Latin1 in BINARY und dann von BINARY in UTF-8. Wiederholen Sie diesen Vorgang für alle Spalten, die türkische Zeichen enthalten.

Wichtiger Hinweis: Führen Sie diese Abfrage unbedingt in einer Testumgebung aus und erstellen Sie ein Backup Ihrer Datenbank, bevor Sie sie ausführen. Ein falscher Vorgang kann zu dauerhaften Datenbeschädigungen führen.

Fallstudie: Türkisches Zeichenproblem auf einer E-Commerce-Website

Auf einer E-Commerce-Website wurde ein Problem festgestellt, bei dem türkische Zeichen in Produktnamen und -beschreibungen falsch angezeigt wurden. Bei der Überprüfung wurde festgestellt, dass die Datenbank mit der Latin1-Kodierung arbeitete, während die HTML-Seiten die UTF-8-Kodierung verwendeten. Diese Inkompatibilität führte dazu, dass Zeichen wie "ş", "ç", "ğ" in Produktnamen und -beschreibungen verfälscht wurden.

Lösung:

  1. Die Datenbank wurde in UTF-8 konvertiert.
  2. Tabellen und Spalten wurden mit der UTF-8-Zeichenkodierung neu erstellt.
  3. PHP-Skripte und HTML-Seiten wurden mit der UTF-8-Kodierung gespeichert.
  4. Die Standardzeichenkodierung wurde mit der Datei `.htaccess` auf UTF-8 gesetzt.

Dank dieser Schritte wurden alle türkischen Zeichenprobleme auf der E-Commerce-Website behoben und Produktnamen und -beschreibungen werden nun korrekt angezeigt.

Übersichtstabelle: Lösungsmethoden und Anwendungsbereiche

Lösungsmethode Beschreibung Anwendungsbereiche Bedeutung
Datenbank in UTF-8 konvertieren Die Zeichenkodierung der MySQL-Datenbank auf UTF-8 setzen. Grundvoraussetzung für alle Webanwendungen. Hoch
HTML-Seitenkodierung einstellen Die UTF-8-Kodierung mit dem ``-Tag der HTML-Seite angeben. Erforderlich für alle Webseiten. Hoch
PHP-Skriptkodierung einstellen Das PHP-Skript mit UTF-8-Kodierung speichern. Erforderlich für alle PHP-Skripte. Hoch
MySQL-Verbindungskodierung einstellen Sicherstellen, dass die Verbindung zwischen PHP und MySQL auf UTF-8 eingestellt ist. Erforderlich für alle PHP-Skripte mit Datenbankinteraktion. Hoch
Kodierung mit `.htaccess` einstellen Die Standardzeichenkodierung mit der `.htaccess`-Datei auf UTF-8 setzen. Kann verwendet werden, um eine allgemeine serverseitige Lösung bereitzustellen. Mittel

Ergebnis

Die Verwendung der UTF-8-Zeichenkodierung ist der beste Ansatz, um türkische Zeichenprobleme in Webanwendungen zu lösen, die mit PHP und MySQL arbeiten. Stellen Sie sicher, dass UTF-8 überall korrekt konfiguriert ist, einschließlich Datenbank, HTML-Seiten, PHP-Skripte und MySQL-Verbindung. Durch die Anwendung der in diesem Artikel vorgestellten Lösungsmethoden können Sie türkische Zeichenprobleme einfach lösen und sicherstellen, dass Ihre Webanwendung korrekt funktioniert.

 

Finden Sie nicht die Informationen, die Sie suchen?

Ticket erstellen
Fanden Sie es nützlich?
(3547 mal angesehen / 406 Kunden fanden es hilfreich)

Call now to get more detailed information about our products and services.

Top