Frage

Muss ich wechseln von VARCHAR zu VARBINARY und TEXT BLOB für UTF-8 in Mysql & PHP wirklich? Oder kann ich Stick mit CHAR / TEXT-Felder in MySQL?

War es hilfreich?

Lösung

Vielleicht. Als wies jason und ich nicht bemerkt, MySQL UTF-8 nicht nur die Basic Multilingual Plane abzubilden. Das Handbuch ist weist jedoch darauf hin, dass „Sie [utf8 und ucs2] sind ausreichend für fast alle Zeichen in den großen Sprachen“ So ist es wahrscheinlich sicher, aber Sie könnten prüfen wollen, was in der Basic Multilingual Plane ist nur um sicher zu sein.

Orignal Antwort

Solange Ihre Datenbank mit UTF-8 sollten Sie mit VARCHAR und TEXT-Stick können. (Als Randbemerkung, die MySQL-Handbuch empfiehlt mit VARCHAR über CHAR mit UTF-8-Platz zu sparen. Da dies der Fall ist, sollte es sicher sein VARCHAR und TEXT zu verwenden.)

Andere Tipps

Nicht unbedingt. MySQL UTF8-Unterstützung ist nur 3 Byte UTF8 begrenzt, die bis alles umfasst und einschließlich der Basic Multilingual Plane . Es ist nur, wenn Sie Zeichen benötigen, die in dem 4-Byte-Bereich, die Sie benötigen BLOB-Speicher zu verwenden; dies ist selten, aber nicht völlig ungewöhnlich. Sehen Sie sich den Wikipedia-Artikel für eine Aufschlüsselung das, was Sie vermissen werden, und entscheiden, ob es etwas gibt, dass ist ein Muss.

Hier ist ein schönes verknüpfen mit UTF-8 über den Umgang in PHP. MySQL funktioniert sehr gut mit UTF-8, wenn Sie die Sortierung richtig eingestellt. PHP auf der anderen Seite hat viele Probleme.

Natürlich ist es sicher VARCHAR verwendet UTF-8-Text zu speichern und keine VARBINARY wird dafür benötigt.

VARCHAR ist ein „CHARACTER variabler Länge“, die auf die Anzahl der BYTES einwandfrei anpassen benötigt, um die Zeichen zu speichern nach dem charCode ausgewählt.

Es gibt auch einen Grund, warum MySQL-UTF-8-Unterstützung auf nur 3 Bytes begrenzt ist. Sie würden in die entsprechenden UTF-8-Dokumente tauchen müssen, die über das Verschlüsselungsverfahren von UTF-8 zu verstehen, sprechen, warum das richtig ist.

Und last but not least: Wenn Sie UTF-8 nicht sicher sind, können Sie immer Opt-in zu UTF-16. Dennoch werden Sie noch VARCHAR verwenden, wie es einwandfrei auf die richtige Byte-Länge anpassen trotzdem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top