2013-01-23 29 views
6

EmojiをMySqlデータベースに保存したいのですが、3バイトの絵文字がデータベースに正しく保存されていますが、4バイトの絵文字が疑問符として保存されています。私はutf8をutf8mb4に完全に変換したようですが、ここでは正確に何が欠けているのか分かりません。私は、MySQLシェルでSHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';を行うときに私のMySQLのバージョンは、5.5.29ですが、それは次のことを示していますphpMyAdmin mysqlが絵文字として保存されました

+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| 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    | 
| collation_connection  | utf8mb4_unicode_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | utf8mb4_unicode_ci | 
+--------------------------+--------------------+ 

さて、テスト目的のために、私は唯一の絵文字省をテストするために作成された1台で1つのデータベースを持っています。 (まだ疑問符)

CREATE TABLE `test_emojis` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

、それはまだ動作しません:私は、phpMyAdminのを介してデータベースを作成し、およびMySQLのシェルを介してテーブルを作成しました。

しかし、私はphpMyAdminで疑問符を見ていますが、select * from test_emojiと入力すると、Mysqlシェルでemojiアイコンが正しく表示されます。何か案は?

誰か助けてもらえますか?

おかげ

+0

クライアント(phpMyAdmin)が実際にutf8mb4文字セットを使用してサーバーに接続してもよろしいですか? phpMyAdminの中から上記の質問を繰り返してください –

+1

こんにちは、Michel、思い出してくれてありがとう、myphpadminは実際にはまだutf8を使用しています。そのためphpmyadminクライアントでは表示できませんが、MySQLシェルで見ることができます。しかし、ここでは新しい質問があります。この記事を読んでください:http://stackoverflow.com/questions/14488503/ios-cannot-decode-emoji-unicode-in-json-format-correctly-and-emoji-icons-are-di – user2002692

答えて

3

あなたはそれがこれを変更するコードの編集する必要がありますので、phpMyAdminがutf8文字セットをハードコードしています。将来のバージョンでは、fb30c14に修正されています(これは、これらの値を変更する場所も示しています)。

2

phpMyAdminを4.3.9以上にアップグレードして問題を解決しました。

関連する問題