Heim  >  Artikel  >  Datenbank  >  Warum verschwinden meine Emojis in MySQL?

Warum verschwinden meine Emojis in MySQL?

DDD
DDDOriginal
2024-11-06 20:25:02387Durchsuche

Why are my Emojis Disappearing in MySQL?

MySQL-Zeichenkodierung und Emoji-Speicherung

Wir haben eine iPhone-Anwendung, die Emoticons an ein PHP-Backend überträgt, das sie dann in MySQL einfügt Datenbank. Nach erfolgreicher Einfügung erscheint der gespeicherte Wert jedoch leer.

Nur-Text-Einfügungen sind erfolgreich, aber wenn Emoticons enthalten sind, wird nur der Text eingefügt. Vorschläge, den Feldtyp in „Blog“ zu ändern (um Bilddaten aufzunehmen), erwiesen sich aufgrund gelegentlicher Nicht-Emoticons-Einfügungen und geringem Speicherbedarf als ungeeignet.

Lösung: MySQL-Zeichensatzkompatibilität

Das Problem liegt in der Zeichenkodierung von MySQL. iOS-Emojis verwenden hauptsächlich Codepunkte, die über die Basic Multilingual Plane (BMP) der Unicode-Tabelle hinausgehen. Beispielsweise befindet sich das Emoji „Lächelndes Gesicht mit offenem Mund und lächelnden Augen“ unter U 1F604.

MySQL-Versionen vor 5.5 unterstützen nur UTF-8 für BMP, wodurch die Speicherung auf Zeichen unter U FFFF beschränkt ist. Folglich kann MySQL das U 1F604-Emoji oder andere „hohe Zeichen“ nicht speichern.

Um dieses Problem zu lösen, verwenden Sie MySQL 5.5 und wählen Sie utf8mb4 (authentisches UTF-8), utf16 oder utf32 als Spaltenzeichensatz. Stellen Sie außerdem sicher, dass die MySQL-Verbindung zwischen PHP und der Datenbank denselben Zeichensatz verwendet.

Verwenden Sie für MySQL-Versionen vor 5.5 den Spaltentyp BLOB, der Rohbytes ohne Berücksichtigung von „Zeichen“ speichert. Dies ermöglicht zwar die Speicherung von Emojis, beeinträchtigt jedoch die Effizienz der Textsuche und Indizierung.

Das obige ist der detaillierte Inhalt vonWarum verschwinden meine Emojis in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn