sql >> データベース >  >> RDS >> Mysql

UTF8を使用したMySQLコマンドラインフォーマット

    簡単な答え

    オプション--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文字セットの違いは何ですか?



    1. Oracleで1か月の日数を取得する2つの方法

    2. MySQLでVALUESステートメントを使用する場合の「エラー1136(21S01):列数が行2の値数と一致しない」を修正

    3. OracleのADD_MONTHS()関数

    4. 配列タイプのarray_agg