57

私は 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の絵文字のutf8からutf8mb4を変更しました。それらは 4byte コードで表されます。

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

それらは 3F 3F 3F (Hex) です。

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

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

私を助けてください。

4

2 に答える 2

93

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クエリを実行する前に a を実行してください。

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

于 2011-11-13T06:01:04.073 に答える
66

最近、MySQL から に切り替える方法についての詳細なガイドを書きましutf8utf8mb4。そこの手順に従えば、すべてが正しく機能するはずです。プロセスの個々のステップへの直接リンクは次のとおりです。

お役に立てれば。

于 2012-08-07T06:40:12.597 に答える