bozkurt: MYSQL

Hallo,

ich habe ein Zeichensatzproblem in einer Datenbanken. In der MySQL Datenbank habe ich die Kollation auf latin5_turkish_ci eingestellt, sowohl die ganze Tabelle als auch die einzelnen Spalten.

Der Header sieht folgendermaßen aus:

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

Leider werden die Sonderzeichen wie das türkisches "sch" und "ch" nicht ausgegeben, sondern nur Fragezeichen.

Ich habe auch in dem header charset=windows-1254 eingegeben, leider hat es auch nicht funktioniert.

Komischerweise wenn ich ein Unicode z. B. &#287; in ein Feld in der MySQL-Datenbank eingebe, wird es richtig "übersetzt".

Es geht darum, dass ich eine MySQL Abfrage erstelle, die auch klappt nur ist das Problem mit den Sonderzeichen. Und da will ich nicht alle Sonderzeichen als Unicode eingeben, da es über 1000 Einträge sind.

Achso, die Eingaben, die in meiner MySQL Datenbank sind, beinhalten natürlich die Sonderzeichen, also ich meine z.B. türkisches "sch" und etc.

Viele Grüße und vielen Dank
bozkurt

  1. echo $begrüßung;

    ich habe ein Zeichensatzproblem in einer Datenbanken. In der MySQL Datenbank habe ich die Kollation auf latin5_turkish_ci eingestellt, sowohl die ganze Tabelle als auch die einzelnen Spalten.
    Der Header sieht folgendermaßen aus:
    <meta http-equiv="Content-Type" content="text/html; charset=latin-5"></meta>
    Leider werden die Sonderzeichen wie das türkisches "sch" und "ch" nicht ausgegeben, sondern nur Fragezeichen.

    Es fehlen Zwischenschritte. Zum einen ist das die Kommunikation zwischen MySQL und dem Client, und zum anderen ist die charset-Angabe (wenn vorhanden) im gleichnamigen HTTP-Header stärker als die des Meta-Elements.

    Die MySQL-API kennt die Funktion mysql_set_character_set(). Suche dazu das Pendant in der von dir verwendeten Programmierumgebung. Alternativ kannst du ein SET NAMES-Statement nach dem Verbindungsaufbau absetzen, wenn du nur ISO-8859/Latin und UTF-8 verwendest.

    Komischerweise wenn ich ein Unicode z. B. &#287; in ein Feld in der MySQL-Datenbank eingebe, wird es richtig "übersetzt".

    Das ist eine Kodierung, die nicht durch eine anders konfigurierte Kodierung auf dem Weg kaputtgemacht wird. Allerdings ist es nicht notwendig, die Nicht-ASCII-Zeichen so zu notieren. Das hat auch noch gravierende Nachteile bei der Stringverarbeitung (macht den String länger, Suchen und Sortieren kann man damit nicht). Außerdem ist das nicht "Unicode" sondern eine Numerische Zeichenreferenz in HTML.

    Es geht darum, dass ich eine MySQL Abfrage erstelle, die auch klappt nur ist das Problem mit den Sonderzeichen. Und da will ich nicht alle Sonderzeichen als Unicode eingeben, da es über 1000 Einträge sind.

    Die Anzahl spielt keine Rolle. Es ist auch bei wenigen Zeichen keine besonders gute Idee, eine Kodierung für einen anderen Kontext zu verwenden.

    Was hältst du von UTF-8? Damit hast du praktisch ausgesorgt und aller Voraussicht nach auch keine Probleme mit Zeichen jenseits der gewählten ISO-8859/Latin-Variante.

    echo "$verabschiedung $name";