web-dev-qa-db-ja.com

mysqlにutf-8 mb4文字(ios5のemoji)を挿入する方法は?

私はmysql 5.5.10を使用していますが、そのcharacter_setsは

| 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         |

IOS5の絵文字のutf8mb4をutf8から変更しました。それらは4バイトコードで表されます。

しかし、スマイリー絵文字を3つ挿入すると、「???」 mysqlにあります。

3F 3F 3F(16進数)です。

IOS4の絵文字はうまく保存できますが、iOS5の絵文字は保存できません。

IOS5の絵文字を保存するにはどうすればよいですか?

私を助けてください。

55
plenty

4バイトのUnicode文字はまだ広く使用されていないため、そこにあるすべてのアプリケーションが完全にサポートしているわけではありません。 MySQL 5.5は、適切に設定されている場合、4バイト文字で正常に動作します。他のコンポーネントも同様に動作するかどうかを確認してください。

確認すべき他のいくつかの事項を次に示します。

  • クライアントとサーバーの文字セットの設定に加えて、すべてのテーブルのデフォルトの文字セットとテキストフィールドがutf8mb4に変換されていることを確認してください。 ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4;など。

    データがすでにutf8文字セットにある場合、問題なくutf8mb4に変換する必要があります。いつものように、試す前にデータをバックアップしてください!

  • また、アプリレイヤーがデータベース接続の文字セットをutf8mb4に設定していることを確認してください。これが実際に起こっていることを再確認してください–選択したフレームワークのmysqlクライアントライブラリの古いバージョンを実行している場合、utf8mb4サポートでコンパイルされていない可能性があり、文字セットが正しく設定されません。そうでない場合は、自分で更新またはコンパイルする必要があります。

  • Mysqlクライアントでデータを表示するときは、絵文字を表示できるマシン上にいることを確認し、SET NAMES utf8mb4クエリを実行する前。

アプリケーションのすべてのレベルで新しい文字をサポートできれば、破損することなくそれらを使用できるはずです。

93
Nick Baicoianu
65
Mathias Bynens