webentwicklung-frage-antwort-db.com.de

Wie utf-8 mb4 Zeichen (Emoji in ios5) in MySQL einfügen?

Ich benutze MySQL 5.5.10, und seine character_sets sind

| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8mb4_general_ci         |
| collation_database       | utf8mb4_general_ci         |
| collation_server         | utf8mb4_general_ci         |

Ich habe utf8mb4 von utf8 für iOS5's Emoji geändert. Sie werden durch 4-Byte-Code dargestellt.

Aber als ich 3 Smiley-Emojis eingefügt habe, '???' ist in MySQL.

Sie sind 3F 3F 3F (Hex).

Ich kann iOS4s Emojis gut speichern, iOS5s aber nicht.

Wie kann ich die Emojis von iOS5 speichern?

Bitte hilf mir.

55
plenty

4-Byte-Unicode-Zeichen sind noch nicht weit verbreitet, daher werden sie nicht von jeder Anwendung unterstützt. MySQL 5.5 funktioniert gut mit 4-Byte-Zeichen, wenn es richtig konfiguriert ist. Prüfen Sie, ob auch Ihre anderen Komponenten damit arbeiten können.

Hier sind ein paar andere Dinge, die Sie überprüfen sollten:

  • Stellen Sie sicher, dass alle Standardzeichensätze und -textfelder Ihrer Tabellen in utf8mb4 konvertiert werden, zusätzlich zum Festlegen der Client- und Server-Zeichensätze, z. ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4; und so weiter.

    Wenn sich Ihre Daten bereits im Zeichensatz utf8 befinden, sollten sie problemlos in utf8mb4 konvertiert werden können. Sichern Sie wie immer Ihre Daten, bevor Sie es versuchen!

  • Stellen Sie außerdem sicher, dass der Zeichensatz Ihrer App-Ebene für die Datenbankverbindungen auf utf8mb4 festgelegt ist. Überprüfen Sie, ob dies tatsächlich geschieht. Wenn Sie eine ältere Version der mysql-Clientbibliothek des von Ihnen ausgewählten Frameworks ausführen, wurde diese möglicherweise nicht mit utf8mb4-Unterstützung kompiliert, und der Zeichensatz wird nicht ordnungsgemäß festgelegt. Wenn nicht, müssen Sie es möglicherweise aktualisieren oder selbst kompilieren.

  • Stellen Sie beim Anzeigen Ihrer Daten über den MySQL-Client sicher, dass Sie sich auf einem Computer befinden, auf dem Emoji angezeigt werden kann, und führen Sie ein SET NAMES utf8mb4, bevor Abfragen ausgeführt werden.

Sobald jede Ebene Ihrer Anwendung die neuen Zeichen unterstützen kann, sollten Sie sie ohne Beschädigung verwenden können.

93
Nick Baicoianu
65
Mathias Bynens