türkischen Text Darstellen:
Dennis Rochel
- sonstiges
Hallo,
ich habe folgendes merkwürdiges Problem:
Ich habe eine Seite in PHP Programmiert, die in Deutsch, Russisch und Türkisch verfügbar ist.
Manche Texte kommen aus der MySQL Datenbank, andere wiederrum stehen "statisch" in HTML Seiten. Soweit so gut; Ich habe jetzt via
header("content-type: text/html; charset=UTF-8");
Das "allgemeine" Charset geladen, was auch super funktioniert. Ich habe jedoch manche Zeichen in der DB (nur türkische), die Probleme bereiten.
zb das "ç" Zeichen, Wenn das in einem HTML File steht, wird es korrekt angezeigt, aus der DB jedoch nicht.
Hoffe das war einigermaßen verständlich ausgedrückt;)
Jetzt habe ich allerdings auch schon einen Lösungsansatz, brauche dazu aber eure Hilfe: und zwar wandelt der PHPMyAdmin Zeichen, die ihm zu wirr sind, in diese Schreibweise um: zB wird П --> П .
Was ist das für eine Schreibweise?! Denn wenn ich jetzt die passende Kennung für die paar türkischen Zeichen hätte (ç, ...), dann wäre mein Problem gelöst.
Gruß
Dennis
Sup!
Unicode?
Gruesse,
Bio
Hallo
Ich habe jedoch manche Zeichen in der DB (nur türkische), die Probleme bereiten.
Die MySQL-Datenbank muss auf den utf-8-Betrieb eingestellt, bzw. vorbereitet sein.
zb das "ç" Zeichen, Wenn das in einem HTML File steht, wird es korrekt angezeigt, aus der DB jedoch nicht.
Wie sieht es mit einem Link aus auf eine Testseite?
Herzliche Grüße
Wolfgang
echo $begrüßung;
Ich habe eine Seite in PHP Programmiert, die in Deutsch, Russisch und Türkisch verfügbar ist.
Manche Texte kommen aus der MySQL Datenbank,
Stimmt die in der Feld-Definition von String-Feldern gemachte Angabe zur Zeichenkodierung mit der tatsächlichen Kodierung der darin gespeicherten Daten überein? Das kann dann unterschiedlich sein, wenn schon beim Einlesen der Daten nicht auf eine übereinstimmende Kodierung zwischen Client und Server geachtet wurde. Wenn die Daten im phpMyAdmin betrachtet ordentlich aussehen ist alles in Ordnung. Wenn nicht, sind die Daten in der Datenbank kaputt. Ob sie noch zu retten sind, kommt ganz darauf an, wie sie jetzt aussehen. Wenn pro Nicht-ASCII-Zeichen zwei bis vier "komische" Zeichen zu sehen sind, stehen die Chancen gut. Wenn nur Fragezeichen oder andere Ersatzzeichen zu sehen sind, besteht wenig Hoffnung.
andere wiederrum stehen "statisch" in HTML Seiten. Soweit so gut; Ich habe jetzt via
header("content-type: text/html; charset=UTF-8");
Das "allgemeine" Charset geladen, was auch super funktioniert.
Nein, damit hast du kein Charset geladen, sondern dem Browser mitgeteilt, dass die Daten des Dokuments in der Kodierung UTF-8 vorlägen. Das muss dann natürlich auch stimmen, sonst kann der Browser nur Fehler feststellen und Ersatzzeichen (Fragezeichen oder Fragezeichen im Kästchen) darstellen.
Ich habe jedoch manche Zeichen in der DB (nur türkische), die Probleme bereiten.
zb das "ç" Zeichen, Wenn das in einem HTML File steht, wird es korrekt angezeigt, aus der DB jedoch nicht.
Angenommen, die Angabe der Zeichenkodierung der Felder stimmt mit dem Inhalt überein. Hast du dem MySQL mitgeteilt, in welcher Kodierung du ihm die Befehle sendest und in welcher Kodierung es dir antworten soll? Wenn nicht, hast du dich davon überzeugt, dass die Kodierung, von der MySQL standardmäßig ausgeht, diejenige ist, die du zur Kommunikation mit MySQL verwendest? Der phpMyAdmin zeigt zwar auf der Startseite eine Kodierung an, aber das ist die Kodierung, die er zum Kommunizieren mit MySQL verwendet. Die Default-Einstellungen siehst du auf der Seite "MySQL-System-Variablen anzeigen". Es sind die Felder die mit "character set" anfangen. Für dich wäre der "Globale Wert" ausschlaggebend.
Zusatzfrage: Ist die verwendete Kodierung eine, mit der man die fraglichen Zeichen darstellen kann?
Das MySQL-Handbuch-Kapitel Character Set Support gibt Auskunft über MySQLs umfangreiche Möglichkeiten, mit Kodierungen umzugehen. Das Kapitel Connection Character Sets and Collations behandelt die Thematik Zeichenkodierung auf der Verbindung. Die Kurzform lautet:
SET NAMES utf8
Das ist nach dem Verbindungsaufbau zu senden, wenn man mit MySQL in UTF-8 zu kommunizieren gedenkt.
Jetzt habe ich allerdings auch schon einen Lösungsansatz, brauche dazu aber eure Hilfe: und zwar wandelt der PHPMyAdmin Zeichen, die ihm zu wirr sind, in diese Schreibweise um: zB wird П --> П .
Wenn du beim Betrachten der Daten im phpMyAdmin solche Dinge siehst, ist daran nicht der phpMyAdmin schuld. Vielmehr hat das ein Browser gemacht, der in einem Formular ein Zeichen eingegeben bekommen hat, das er in der Kodierung der Seite nicht zum Server übertragen konnte.
Beispielsweise sei die Kodierung der Seite auf ISO 8859-1 eingestellt und jemand gibt ein П ein, das darin nicht vorkommt, dann wandelt der Browser das in eine numerische Zeichenreferenz (&#nnnn;) um. Das ist recht ungünstig, da du nicht unterscheiden kannst, ob das der Benutzer diese Zeichenfolge so gewollt hat oder ob der Browser das eigenmächtig umkodiert hat. Auf jeden Fall hast du damit ein Problem, weil somit Daten in deiner Datenbank gelandet sind, die bereits für ein spezielles Ausgabemedium formatiert sind. Versuch mal darauf Stringoperationen wie das Zählen von Zeichen oder Suchen anzuwenden ...
Was ist das für eine Schreibweise?! Denn wenn ich jetzt die passende Kennung für die paar türkischen Zeichen hätte (ç, ...), dann wäre mein Problem gelöst.
Es ist am besten, wenn die komplette Verarbeitungskette auf eine Zeichenkodierung eingestellt ist, die alle vorkommenden Zeichen abbilden kann. UTF-8 ist eine solche. Das was du versuchst, hört sich an, wie einen Fehler durch einen anderen zu korrigieren.
echo "$verabschiedung $name";