Tach!
Was hat die Collation mit dem Speicherplatzbedarf des Feldes zu tun?
Nichts.
Ich benutze immer http://php.net/manual/en/mysqli.set-charset.php
Was ist an 'set names' besser, als an der PHP-Funktion mysqli_set_charset()?
Nichts. Es macht sogar weniger. Aber das ist für ASCII, alle ISO-8859-... und UTF-8 nicht weiter relevant.
Konkret stellt SET NAMES nur die Schnittstelle für die aktuelle Verbindung im Server um. mysqli_set_charset() stellt auch noch die Client-API um, so dass Funktionen wie mysqli_real_escape_string() die Zeichenkodierung ebenfalls berücksichtigen können. Da aber alle dafür relevanten Zeichen eineindeutige Bytewerte im ASCII-Bereich haben, fällt das nicht weiter ins Gewicht. Bei einigen asiatischen Kodierungen kann es aber Probleme geben, weil diese auch Bytes < 0x80 für Kombinationen verwenden und es dann andere Zeichen sind. Aber, wie gesagt, für uns nicht weiter relevant.
Warum heißt der Spaltentyp 'varchar'? Hat das im Gegensatz zu 'char' vielleicht 'was zu bedeuten? Ich werde nicht ganz schlau aus dem Handbuch:
http://dev.mysql.com/doc/refman/5.5/en/char.html
VARCHAR ist immer nur so lang, wie der String lang ist, maximal aber die angegebene Länge. CHAR belegt immer soviel Zeichen wie angegeben. Der Rest wird mit Leerzeichen aufgefüllt.
Wird varchar nun auch abgeschnitten, oder nicht?
Ja, wenn das Feld zu klein dimensioniert ist.
dedlfix.