it-swarm.com.de

Warum verwendet MySQL standardmäßig latin1_swedish_ci?

Weiß jemand, warum latin1_swedish der Standard für MySQL ist. Es scheint mir, dass UTF-8 kompatibler wäre, oder?

Standardeinstellungen werden normalerweise gewählt, weil sie die beste universelle Wahl sind, aber in diesem Fall scheint es nicht so zu sein, wie sie es getan haben.

51
Metropolis

Soweit ich sehen kann, war latin1 der Standardzeichensatz in Prä-Multibyte-Zeiten und es sieht so aus, als ob er fortgesetzt wurde, wahrscheinlich aus Gründen der Abwärtskompatibilität (z. B. für ältere CREATE-Anweisungen, in denen keine Kollatierung angegeben wurde).

Von hier :

Was 4.0 getan hat

MySQL 4.0 (und frühere Versionen) unterstützte nur eine Kombination aus Zeichensatz und Sortierung mit Einzelbyte-Zeichencodierungen, die auf Serverebene angegeben wurde. Die Standardeinstellung war latin1, Was einem Zeichensatz von latin1 und der Sortierung von latin1_swedish_ci In MySQL 4.1 entspricht.

Warum schwedisch, kann ich nur vermuten, dass MySQL AB schwedisch ist/war. Ich kann keinen anderen Grund für die Auswahl dieser Zusammenstellung erkennen. Es gibt einige spezielle Sortierfehler (ÄÖÜ nach Z, glaube ich), aber sie entsprechen nicht annähernd einem internationalen Standard.

39
Pekka 웃

latin1 ist der Standardzeichensatz. Latin1 von MySQL entspricht dem Windows-Zeichensatz cp1252. Dies bedeutet, dass es dasselbe ist wie das offizielle ISO 8859-1 oder IANA (Internet Assigned Numbers Authority) latin1, mit der Ausnahme, dass IANA latin1 die Codepunkte zwischen 0x80 und 0x9f als "undefiniert" behandelt, während cp1252 und daher MySQLs latin1 Zeichen zuweisen für diese Positionen.

von

http://dev.mysql.com/doc/refman/5.0/de/charset-we-sets.html

Könnte dir helfen zu verstehen warum.

6
bear

Die Verwendung einer Einzelbytecodierung hat einige Vorteile gegenüber Mehrbytecodierungen, z. Die Länge einer Zeichenfolge in Bytes entspricht der Länge dieser Zeichenfolge in Zeichen. Wenn Sie also Funktionen wie SUBSTRING verwenden, ist es nicht intuitiv klar, ob Sie Zeichen oder Bytes meinen. Aus den gleichen Gründen ist auch eine erhebliche Änderung des internen Codes erforderlich, um Multibyte-Codierungen zu unterstützen.

2
AndreKR

Die merkwürdigsten Merkmale dieser Art sind historisch. Sie haben es vor langer Zeit so gemacht, und jetzt können sie es nicht ändern, ohne eine App abhängig von diesem Verhalten zu beschädigen.

Vielleicht war UTF8 damals nicht beliebt. Oder vielleicht hat MySQL keine Zeichensätze unterstützt, bei denen mehrere Bytes für Zeichen codiert wurden.

0
CodesInChaos