dedlfix: utf8 unicode ci

Beitrag lesen

echo $begrüßung;

wahrscheinlich muß ich meine mysql tabelle jetzt mit einer kollation
utf8 unicode ci
ausrüsten--oder?  Hier sind ja angeblich alle sprachen enthalten.

Das ist keine Frage des Enthaltenseins. Andersherum wird eher ein Schuh draus.
Ein Zeichensatz ist eine Vorschrift, welches Zeichen auf welchen Wert abgebildet wird. Zum Beispiel bekommt im Zeichensatz X ein A den Wert 1, B den Wert 2. Und andersrum, wenn eine 1 auftaucht steht die für das A, 2 für B.
Nun gibt es folgende Probleme:

  • Für C gibt es keinen Wert, und deshalb kann es nicht mit diesem Zeichensatz übertragen/verarbeitet werden.
  • Ein weiterer Zeichensatz (Y) sagt, C hat den Wert 2. Der Empfänger weiß aus irgendeinem Grund nicht, dass Y-kodierte Werte kommen und interpretiert die Werte als X-kodiert. Eine 2 wird dann als B interpretiert.

In Unicode sind 1.114.112 Zeichen[1] und deren Werte festgelegt. UTF8 ist nun eine Transformationsvorschrift für Unicode und man kann damit die Unicode-Zeichen mit 1 bis 4 Byte darstellen.

Ob du nun allerdings utf8_unicode_ci oder utf8_general_ci oder noch ein anderes utf8_*_ci nimmst ist nur eine Frage des Sortierung.

Aber kann denn mein computer alle eingegebenen buchstaben überhaupt interpretieren?

Er, bzw. jeder am Verarbeitungsvorgang beteiligte Prozess, wird die Zeichen richtig interpretieren, wenn er weiß, welche Kodierung vorliegt und mit dieser Kodierung was anfangen kann.
Außerdem lässt sich nicht jede Kodierung in jede andere umwandeln. ISO-8859-x hat nur Platz für 255 Zeichen, da passen natürlich nicht alle Unicode-Zeichen rein.

Kann windows alle diese buchstaben ausgeben?

Wenn du mit ausgeben das Darstellen auf dem Bildschirm meinst, dann ist das eine Frage der Fonts. Kein mit Windows ausgelieferter Font hat für jedes Unicode-Zeichen ein entsprechendes Bild. Mir ist auch kein anderer Font bekannt, der für alle Unicode-Zeichen Glyphen enthält. Inwieweit es sinnvoll ist, wirklich jedes Unicode-Zeichen darstellen zu müssen, ist eine andere Frage.

echo "$verabschiedung $name";

[1] http://de.wikipedia.org/wiki/Utf8