2017-05-07 8 views
0

私は昨日からこの問題について心配しています。最終的にMySQL上でutf8mb4を正しく設定する方法は?

MySQLデータベースをutf8からutf8mb4に変換しようとしています。そうするために、私はこれらのサイト/スレッド続く:

など、 Change MySQL default character set to UTF-8 in my.cnf?Cannot store emoji in databasehttps://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4を私のデータベースには、あまりにも予想通り utf8mb4_unicode_ci collationを持っている、と彼女のすべてのテーブルのようです。それでも

、私はSHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';を進めるときに私が取得:

#With a Root access 
Variable_name    Value 
character_set_client  utf8    #expecting utf8mb4 
character_set_connection utf8    #expecting utf8mb4 
character_set_database  utf8mb4    #good 
character_set_filesystem binary    #good 
character_set_results  utf8    #expecting utf8mb4 
character_set_server  utf8mb4    #good 
character_set_system  utf8    #expecting utf8mb4 
collation_connection  utf8_general_ci  #expecting utf8mb4_unicode_ci 
collation_database   utf8mb4_unicode_ci #good 
collation_server   utf8mb4_unicode_ci #good 

#With a standard user access 
Variable_name    Value 
character_set_client  utf8    #expecting utf8mb4 
character_set_connection utf8mb4    #good 
character_set_database  utf8mb4    #good 
character_set_filesystem binary    #good 
character_set_results  utf8    #expecting utf8mb4 
character_set_server  utf8mb4    #good 
character_set_system  utf8    #expecting utf8mb4 
collation_connection  utf8mb4_unicode_ci #good 
collation_database   utf8mb4_unicode_ci #good 
collation_server   utf8mb4_unicode_ci #good 

私はこのような/etc/mysql/conf.d/90-my.cnfファイル設定:

[client] 
default-character-set = utf8mb4 

[mysql] 
default-character-set = utf8mb4 

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init-connect = 'SET collation_connection = utf8mb4_unicode_ci' 
init-connect = 'SET NAMES utf8mb4' 

私のMySQLバージョンは、debian 7のすべてのセット、5.5.54です。

私に手伝ってくれる手がかりはありますか?

あなたの助けのためのThxを、そして私の悪い英語のため申し訳ありません...

EDIT

楽しい事実:

:私はインラインコマンドで変数を確認したときに、私はこれを得ました
mysql> show variables like "%character%"; 
+--------------------------+----------------------------+ 
| 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      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 

私は(非スーパーユーザアクセス)のphpMyAdminに確認したときに、私はまだcharacter_set_clientためutf8character_set_resultsを有するが

答えて

0

ユーザーとしてrootを接続すると、init-connectは無視されます。

には、SUPER特権なしでアプリケーションにログインします。

次に、アプリからの接続を確立するときはいつでも、文字セットを提供する言語固有の方法を実行してください。 (またはSET NAMES utf8mb4を実行してください。)どのようなアプリケーション言語を使用していますか?場合

何か他のものは、あなたの懸念のTrouble with utf8 characters; what I see is not what I stored

+0

Thxをたくさんの「ベストプラクティス」を参照してください、間違って起こっています。私は、スレッドを編集して、データベースへの標準的なユーザーアクセスを持つ文字/照合機能を追加しました。結果は優れていますが、まだ完璧ではありません。 私はあなたのリンク先に素早く見て、あなたの説明は非常に良いです。私は仕事から戻ってくるとすぐにそれらを試してみます。私は何かが働くかどうかを教えてあげます。 (Btw私は 'HEX(txt)'を試してみたところ、結果は良好で、期待どおりすべてが "16進数でエンコードされている"ように見えます)。 Thx again – Vae

+0

こんにちはリック、ここにニュースです:私はあなたが "何をすべきか"の部分で言及したすべてを設定しました。データのテストは良好です(二重エンコーディングはなく、すべての文字が正しく認識されます)。 私の問題は:emojisの代わりにデータベースに疑問符がある(しかし、私のウェブサイトに正しく表示されている)。 "あなたが書いたバイトは、utf8/utf8mb4としてエンコードされていません。これを修正してください。"これをどうすれば解決できますか? FYI、私はPHPを使用しています。 あなたの興味のためにThx再び。また近いうちにお会いしましょう。 – Vae

+0

"説明はとても良い" - 私は何年も私がそれらの説明を磨いてきたことを管理者に嫌う。 –

関連する問題