簡単な答え
オプション--default-character-set=utf8
を使用してクライアントを起動します :
mysql --default-character-set=utf8
これは、/etc/mysql/my.cnf
でデフォルトとして設定できます。 ファイル。
[mysql]
default-character-set=utf8
短い答えは機能しませんでした。以下をお読みください
上記のコマンドは、character_set_client
を強制します 、character_set_connection
およびcharacter_set_results
構成変数をutf8
にする 。
実行できるすべての文字セット関連の構成変数の値を確認するには、次のようにします。
show variables like '%char%';
character_set_database
現在使用しているデータベース(スキーマ)の文字セットを提供します。スキーマとテーブルは、デフォルトでcharacter_set_server
で指定された文字セットを使用して作成されます。 、CREATE
で明示的に指定されていない限り ステートメント。
character_set_server
my.cnf
で変更できます ファイル:
[mysqld]
character-set-server = utf8
さらに、テーブルと列には、親テーブルまたはスキーマとは異なる独自の文字セットを含めることができます。データベース内の各テーブルと列の値を具体的に確認するには、次の回答を参照してください。 MySQLデータベース/テーブル/列がどの文字セットであるかを確認するにはどうすればよいですか?
既存のテーブルと列の文字セットを変更する場合は、次の回答を参照してください: MySQLデータベースの文字セットと照合全体をUTF-8に変換する方法は?
mysqlドキュメント> 。
すべてがutf8に設定されていますが、それでも奇妙な文字が表示されます
すべてのcharsets変数、テーブル、および列がutf8
に設定されている場合でも 、画面に変な文字が表示される場合があります。たとえば、誰かがutf8
でUnicode文字を書いた可能性があります 列、latin1
のクライアントを介して 接続(たとえば、mysql --default-character-set=latin1
を実行する )。この場合、値が書き込まれたのと同じ文字セットでデータベースに接続する必要があります。正しいエンコーディングでそれらを取得して書き換えることもできます。
注 :コメントが指摘しているように、mysql utf8
エンコーディングは、UTF-8の真の完全な実装ではありません。 UTF-8の完全な実装が必要な場合は、utf8mb4
を使用できます。 文字セット:
mysql --default-character-set=utf8mb4
詳細はこちら: MySQLのutf8mb4とutf8文字セットの違いは何ですか?