Umlaute

Hi,
ich habe ein Problem mit den Umlauten. Ich gebe ein ä, ü, bzw. ö in ein Input Feld ein. Wenn ich dieses durch absende schreibt er mir in die Datenbank bei einem ä ein “ä” (ohne die Anführungszeichen). Wenn ich jetzt mit PHP vor dem SQL Befehl das ä durch ein ae ersetzen will und mir dieses ausgeben lasse, kommt kein ae sondern noch immer das ä.

Der Code:
($menuname = Der Textinhalt (dieser wird auch in den String geschrieben)):

<?php

function umlautepas($string){
  $upas = Array("ä" => "ae", "ü" => "ue", "ö" => "oe", "Ä" => "Ae", "Ü" => "Ue", "Ö" => "Oe"); 
  return strtr($string, $upas);
  }
  $menuname = umlautepas($menuname);

?>

genauso wie bei:

 $menuname = ereg_replace("ä", "ae", $menuname);

Kennt wer die Lösung, dass das äh “ä” in ein “ae” und nicht in ein “ä” verwandelt?

mfg 99shi

PS: hier der Code vom Formular:

Hast du überprüft ob ob die Kodierung der Datenbankverbindung die richtige (vermutlich UTF8) ist?

das Problem habe ich auch wo anders, mit dem befehl

hier erstellt er auch einen Ordner aber mit dem selben komischen kürzel “ä”.
Daher kann es nicht an der DB liegen. (in die DB speichert er manuell das ä etc. normal und gibt diese auch normal aus).

mfg 99shi

Das ist aber der häufigste Fehler, hast du die Kodierung der Verbindung explizit auf die Benötigte gesetzt? Sind die PHP-Datei in der gleichen Kodierung?

Falls du eine andere als UTF8 nutzt, überleg dir zu wechseln, spart viel Aufwand und ist ziemlich zukunftssicher.

Bei mir wars bisher auch immer die Datenbankverbindung, die Dateicodierung oder die richtige Ausgabe der Codierung (im HTML).

also die Codierung ist bei mir “utf8_bin”.
Das ist ja wie gesagt nicht nur in der DB sondern auch bei der erstellung von Ordnern.

Das ist die vielleicht die Kodierung einer Spalte der Tabelle, wichtig ist bei deinem Problem aber die Kodierung der Verbindung. Meines Wissens nach ist diese standardmäßig auf latin-1 gestellt, wenn PHP sonst aber UTF8 ausgibt, kommt es zu deinen Problemen.

Bei deinem Problem mit dem Ordner erstellen ist dein geposteter Quelltext nicht hilfreich, woher kommen den die Daten, in den Variablen.

Jetzt habe ich die Datenbank komplett noch mal durch gecheckt und alles auf utf8 noch einmal aktualliesiert.

Er schreibt noch immer das “ä” in die Datenbank, sowie als Ordnername.

Die Daten kommen von normalen INPUTFeldern (Type=“text”) aus einem Formular, welches über POST übermittelt wird.
Diese werden wieder ausgelesen über $_POST[“menuname”] und auch ausgegeben. PHP gibt die Variable ä auch wirklich als ä aus. Aber speichern tut er es als “ä” (in DB und Ordner).

Nicht in der Datenbank, sondern im PHP-Skript!

Wenn du mysql verwendest sollte irgendwo die Funktion mysql_set_charset (oder per Query SET NAMES …) auftauchen.

Außerdem sollte das PHP-Skript selbst auch UTF-8-kodiert sein.

[quote]Hinweis:
Dies ist der bevorzugte Weg zur Änderung des Zeichensatzes. Über mysql_query() SET NAMES … auszuführen, wird nicht empfohlen.[/quote]

Deswegen steht es auch in Klammern :p

Danke für die Tipps.
Ich habe Xampp neu aufgesetzt. Bei der Installation hat Xampp die ini falsch beschrieben, falsche Koordinierung (Warum auch immer). Jetzt geht es wieder nach einer neu Installation.

mfg 99shi