dedlfix: mysql varchar(200) - 200 zeichen oder 200 byte?

Beitrag lesen

echo $begrüßung;

wie ist das nochmal, wenn ich in einer mysql_Tabelle ein Feld mit varchar(200) deklariere, wird dann die Zeichenzahl auf 200 begrenzt oder die bytezahl?
Das ist die Zeichenzahl.

bei mySQL 4.x kann man z.B. nur 6 Umlaute + ß in ein varchar(14) Feld unterbringen, da die 14 Zeichen dann voll sind.

Deine Aussage ist so pauschal nicht richtig, da es innerhalb der 4er Reihe zu gravierenden Änderungen kam.

Bis inklusive Version 4.0 konnte MySQL nicht mit UTF-8 umgehen. Das heißt, es kam nur eine 1-Byte-Zeichenkodierung in Frage.*) Wer UTF-8-kodierte Werte darin speichern will, handelt auf eigenes Risko und muss sich der Nebenwirkungen bewusst sein.

Ab Version 4.1 wurde das neue Zeichensatzkonzept eingeführt und damit auch Unicode- und UTF-8-Unterstützung. Wenn eine zu den Daten passende Zeichenkodierung verwendet wird entspricht ein Zeichen einem Zeichen aber möglicherweise mehreren Bytes. Die Byte-Zahl muss bei Indizes berücksichtigt werden, da diese nur 1000 Bytes (bzw. 767 bei InnoDB) lang sein dürfen. MySQL reserviert hier stets 3 Bytes pro Zeichen. Das Überschreiten wird jedoch schon beim Index-Anlegen mit einer Fehlermeldung geahndet.

*) Die in Version 4.0 vorhandenen Multibyte-Kodierungen können hierzulande ignoriert werden.

echo "$verabschiedung $name";