echo $begrüßung;
Mir ist allerdings nicht ganz klar, was du meinst, wenn du sagst "PHP ist noch nicht Unicode-fähig". Denn ich kann Sonderzeichen aus einer Variable ja einfach so ausgeben (also echo "媩ºƒ";)
In diesem Falle reicht PHP die Bytes des Strings nur durch.
Ich nehme an, dass die String-Funktionen noch nicht auf 6-Byte-Zeichen umgerüstet sind?
UTF-8 verwendet 1 bis 4 Byte pro Zeichen.
Die Stringfunktionen können solche Multibyte-Zeichen enthaltenen Zeichenketten nicht richtig verarbeiten. Sie sind nur für ein Byte pro Zeichen ausgelegt, bzw. sie gehen davon aus, dass jedes Zeichen nur ein Byte hat und jedes Byte ein Zeichen ist.
Wenn Multibyte-Zeichen getrennt werden können sie natürlich nicht mehr richtig interpretiert werden, was dann zu ? führt.
Dann läge das Problem ja aber wahrscheinlich nur hier: Wenn ich versuche, den String anhand seiner Bytes zu zerschnippeln.
Ich habe ja aber Einfluß auf die Einspeisung in die Datenbank. Wenn ich also meine Sonderzeichen als "å ö ä" verpacken würde und mit " " exploden, dann hätte ich ein simples Workaround, oder?
Ja. Alternativ könntest du dir ansehen, wie UTF-8-Zeichen kodiert sind und daran die "Zeichengrenzen" erkennen.
Widerstrebt mir zwar etwas, weil es unnötiger Datenbankspeicher ist und außerdem wiederrum Action beim Ein und Ausgeben.
Das explode() am Leerzeichen dürfte die einfachere Variante sein. Wenn dir das zu aufwändig erscheint, du diese Ergebnisse nicht immer wieder berechnen willst, kannst du auch den Einsatz von Sessions erwägen. Verlass dich dabei aber nicht auf dein Bauchgefühl, miss die Geschwindigkeitsunterschiede lieber nach.
echo "$verabschiedung $name";