dedlfix: Wie nutze ich deutsche Umlaute richtig in PhP

Beitrag lesen

Tach!

Für mich bleibt aber immer noch das Problem das ich nicht weiß wie ich dem PhP Code sage das er eine Ä oder Ö oder ß anzeigen soll.

Der PHP-Code zeigt gar nichts an. Aber wie bei allen anderen Zeichen auch, muss der Empfänger wissen, welche Bytes, die bei ihm ankommen, auf welche Weise zu interpretieren sind.

Ich muss das irgendwie im Head definieren wenn ich das Richtig verstanden habe.

Da es mehrere Arten der Kodierung gibt, musst du dem Empfänger mitteilen, welche Kodierung du verwendet hast. Und nicht nur das, du musst selbstverständlich diese Kodierung auch tatsächlich verwenden. "20€" auf einen Briefumschlag zu schreiben reicht ja auch nicht, wenn das Geld nicht drin liegt.

Du musst deinem Editor sagen, dass er die Code-Dateien als UTF-8 speichern soll. Dann kodiert der alle Zeichen, auch die Umlaute entsprechend. Wenn dein Code nun etwas ausgibt, das in ihm als Stringliteral vorliegt, und du dem Empfänger mitgeteilt hast, dass UTF-8 zu erwarten ist, dann sollte der kein Problem haben, die Bytes richtig zu interpretieren und die entsprechenden Zeichen daraus zu lesen. Möchtest du die String noch mit PHP bearbeiten, ist leider noch zu beachte, dass die einfachen Stringfunktionen nicht mit UTF-8 umgehen können. Aber die mb_*-Funktionen können das. Das macht die Sachlage auch nicht leichter.

Wenn du Texte an anderen Orten ablegen möchtest, beispielsweise Datenbank, dann musst du auch mit dieser aushandeln, dass UTF-8 auf der Verbindung zu verwenden sei. Zusätzlich muss meist noch konfiguriert sein, dass die Felder UTF-8 speichern sollen.

Und dieselbe Vorgehensweise muss man für jedes beteiligte System anwenden. Das System muss einerseits in der Lage sein, die Kodierung verarbeiten zu können, andererseits dem Kommunikationspartner mitteilen, welche Kodierung zu erwarten/verwenden sei. Das ist genauso komplex wie die Kommunikationsströme deiner Anwendung sind.

Oder kann man das auch anders Lösen?

Magie, aber die ist äußerst selten.

dedlfix.