Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von utf8mb4 mit PHP und MySQL

utf8 von MySQL Codierung ist nicht tatsächlich UTF-8. Es ist eine Codierung, die UTF-8 ähnelt, aber nur eine Teilmenge dessen unterstützt, was UTF-8 unterstützt. utf8mb4 ist tatsächlich UTF-8. Dieser Unterschied ist ein internes Implementierungsdetail von MySQL. Beide sehen auf der PHP-Seite wie UTF-8 aus. Ob Sie utf8 verwenden oder utf8mb4 , erhält PHP in beiden Fällen gültiges UTF-8.

Sie müssen sicherstellen, dass die Verbindungscodierung zwischen PHP und MySQL ist auf utf8mb4 gesetzt . Wenn es auf utf8 eingestellt ist , unterstützt MySQL nicht alle Zeichen. Sie legen diese Verbindungscodierung mit mysql_set_charset() fest , das PDO charset DSN-Verbindungsparameter oder eine andere Methode, die für Ihre Datenbank-API Ihrer Wahl geeignet ist.

mb_internal_encoding setzt einfach den Standardwert für die $encoding Parameter alle mb_* Funktionen haben. Es hat nichts mit MySQL zu tun.

UTF-8 und UTF-32 unterscheiden sich darin, wie sie Zeichen codieren. UTF-8 verwendet ein Minimum 1 Byte für ein Zeichen und maximal 4. UTF-32 immer verwendet 4 Bytes für jedes Zeichen. UTF-16 verwendet mindestens 2 und höchstens 4 Bytes.
Aufgrund seiner variablen Länge hat UTF-8 ein wenig Overhead. Ein Zeichen, das in UTF-16 in 2 Bytes codiert werden kann, kann in UTF-8 3 oder 4 annehmen; andererseits verwendet UTF-16 niemals less als 2 Byte. Wenn Sie viel asiatischen Text speichern, benötigt UTF-16 möglicherweise weniger Speicherplatz. Wenn der Großteil Ihres Textes Englisch/ASCII ist, verbraucht UTF-8 weniger Speicherplatz. UTF-32 verwendet immer den meisten Speicherplatz.