MariDB 文字コードについて

MariaDB を利用する上で文字コードの設定は、

クライアント側で使用する文字コードの設定と
サーバ側でデータベースを作成した時のデフォルトの文字コードの設定がある。

正しい情報が設定されていれば、クライアント側とサーバ側で使用している文字コードが異なっていても問題はない。

現在の設定を確認するには、コマンドプロンプトから下記のコマンドを実行する。

show variables like "chara%";


 


 
 

設定ファイルを使った文字コードの設定方法

C:\Program Files\MariaDB 10.5\data 内にある 「my.ini」 ファイルを変更する。

クライアント側の設定は CLIENT SECTION [client]の中にある default-character-set で行う。

default-character-set=クライアント側で使用する文字コード

サーバ側の設定は SERVER SECTION [mysqld]の中にある character-set-server で行う。

my.ini ファイルの設定を変更した場合は、 MySQL サーバを再起動して新しい設定ファイルを読み込みなおす必要がある。

クライアント側に関する文字コード

クライアント側に関する文字コードの設定は、クライアント側で使用している文字コードが何を使っているのかを設定する。

MariaDB サーバ側ではクライアントから送信されてきた SQL 文などをクライアント側で使用している文字コードを使って変換する。

クライアント側に関係する項目は次の 3 つ。

クライアント文字コード


character_set_client
クライアントからSQL文などが送信される時に使用される文字コード。

character_set_connection
クライアント側から受け取った文字を変換する文字コード。

character_set_results
クライアントへ結果を送信する時に使用される文字コード。

すべて cp932 が設定されているが、cp932 は Shift_JIS を拡張した文字コードで Windows で使用されている文字コード。

character_set_client cp932
character_set_connection cp932
character_set_results cp932

コマンドプロンプトで使用される文字コードではデフォルトで cp932 となっているため、この設定で問題ない。
 
 

サーバ側に関する文字コード

サーバ側に関する文字コードの設定は、データベースを作成した時に使用されるデフォルトの文字コードを設定する。

サーバ側に関係する項目は次の 3 つ。

サーバ文字コード


character_set_database
デフォルトデータベースで使用される文字コード。USE コマンドでデータベースに接続するたびに変更される。

character_set_server
データベース作成時にデフォルトで使用される文字コード。

character_set_system
システムで使用する文字コード。

現在はどちらも utf8 が設定されている。 utf8mb4 を設定した場合、 MariaDB で 4 バイトの UTF-8 の文字を扱えるようになる。

character_set_database utf8
character_set_server utf8

なお character_set_database は現在接続しているデータベースの文字コードを返すだけで、データベースに接続していないときは character_set_server と同じ値を返す。

データベース作成時にデフォルトで使用される文字コードが latin1 などになっていると文字化けの原因となる。
 
 

MySQLで設定可能な文字コードの一覧

MySQL で設定可能な文字コードの一覧は、 MySQL モニタから次のように実行することで取得できる。

show character set;

-データベース基礎

© 2021 スタートダッシュ