& PHP: MySQL5 Umlaute Problem
Hans
- datenbank
Hallo,
ich habe gerade bei meinem Hoster von der MySQL-Version 4 auf 5 umgestellt.
Da fängst das Problem auch schon an. Ich habe alle Inhalte der MySQL 4 DB in die 5 eingefügt.
Wenn ich jetzt meine HP aufrufen, kommen alle umlaute als ?.
Kann ich irgendwie in MySQL 5 einstellen, das es die Umlaute ausgibt?
Ich habe nähmlich sonst ein paar große Probleme mit meinen PHP-Dateien, die manche Felder mit Umlaute nicht mehr entgegennehmen könne. Die PHP-Scripte können nähmlich meines wissen nicht mit Umlauten convertierung (ö) umgehen.
Beispiel dazu:
HTML:
<form action="test.php" name="form" method="post">
<select name='selection'>
<option>Seite öffnen</option>
</select>
</form>
PHP:
<?php
if($_POST['selection'] == "Seite öffnen") { //Hier das Problem: ö
print "open";
}
?>
Gruß
Hans
ich habe gerade bei meinem Hoster von der MySQL-Version 4 auf 5 umgestellt.
Da fängst das Problem auch schon an. Ich habe alle Inhalte der MySQL 4 DB in die 5 eingefügt.
Wenn ich jetzt meine HP aufrufen, kommen alle umlaute als ?.Kann ich irgendwie in MySQL 5 einstellen, das es die Umlaute ausgibt?
Die Frage ist nicht, ob MySQL die Umlaute ausgibt oder nicht, sondern wie. Du solltest als erstes in der Anzeige Seiteneigenschaften deines Browsers die verwendete (jedoch falsche) Kodierung feststellen, anschließend im Menü Ansicht die Zeichenkodierung ändern, aussichtsreiche Kandidaten sind iso-8859-1, windows-1252 und utf-8.
Je nach Ergebnis ist dann weiterzusehen. Im günstigsten Fall werden die Umlaute korrekt angezeigt, dann meldet der Webserver lediglich die falsche Kodierung bzw. du hast die falsche im HTML-Code angegeben. Im schlechtesten Fall hast du dir ungeschickterweise beim Übertragen der Daten sämtliche Zeichen oberhalb Nummer 127 zerschossen.
Hilfreich wäre eine Adresse, an der man sich das Problem anschauen kann.
<form action="test.php" name="form" method="post">
<select name='selection'>
<option>Seite öffnen</option>
</select>
</form>
<?php
if($_POST['selection'] == "Seite öffnen") { //Hier das Problem: ö
print "open";
}
?>
a) Was hat das mit MySQL zu tun?
b) <option> akzeptiert ein Attribut namens value, mit dem sich der zu übergebende Wert festlegen lässt.
b) <option> akzeptiert ein Attribut namens value,
Wieso beschwert sich die Forensoftware eigentlich ständig über Kinkerlitzchen (ein zusammenhängender, langer Absatz als Antwort auf mehrere Zeilen wird als "unsauber" deklariert), aber offensichtlich kaputte Anweisungen gehen ohne Murren durch?
echo $begrüßung;
ich habe gerade bei meinem Hoster von der MySQL-Version 4 auf 5 umgestellt.
Da fängst das Problem auch schon an. Ich habe alle Inhalte der MySQL 4 DB in die 5 eingefügt.
Du hast die Zeichenkodierung nicht beachtet. MySQL hat in Version 4.1 ein neues Zeichenkodierungskonzept implementiert. Als Anwender tut man gut daran, sich damit zu beschäftigen, wenn man keinen Datenverlust haben möchte: MySQL-Handbuch-Kapitel Character Set Support
Wie/womit erfolgte der Export? Stehen die alten Daten noch in der alten Datenbank zur Verfügung oder zumindest die Export-Datei? Wie/womit erfolgte der Import?
Wenn ich jetzt meine HP aufrufen, kommen alle umlaute als ?.
Was zeigt der phpMyAdmin an? Wenn der die Umlaute auch schon falsch anzeigt, kannst du den Inhalt der neuen Datenbank löschen und ihn neu importieren.
Wenn das nicht möglich ist: Wie sehen die Umlaute nun aus? Sind sie Fragezeichen, dann kannst du die Daten nur zu Fuß korrigieren. Bestehen sie aus zwei Zeichen, lässt sich noch was korrigieren.
Kann ich irgendwie in MySQL 5 einstellen, das es die Umlaute ausgibt?
Wenn der PMA alles richtig anzeigt, hast du nur ein Problem mit der Verbindung zwischen deinen Scripten und der Datenbank. Seit MySQL 4.1 ist es immer eine gute Idee, die für die Verbindung zu verwendende Kodierung explizit festzulegen. Welche Default-Einstellungen der MySQL-Server hat, zeigt der PMA auf der Seite "MySQL-System-Variablen anzeigen" an. Die Werte beginnen mit "character set". Falls eine Zeile "(Globaler Wert)" existiert, gilt dieser.
echo "$verabschiedung $name";