MySQL
のデフォルトでは、米国と西ヨーロッパに適したキャラクタセットの
latin1
( ISO-8859-1)
、そして、照合順序(コアレーション)はスウェーデン語およびフィンランド語に準拠している
latin1_swedish_ci
で、ソート
を行います。
MySQL
標準バイナリは、--with-extra-charsets=complex
でコンパイルしてます。そのため、標準プログラムで、latin1
とすべてのマルチ バイト キャラクタ
セットを処理できます。必要なキャラクタ
セットは、キャラクタ
セットの定義ファイルからロードします。
キャラクタセットは、識別子、つまり名前に使用できる文字を決定します。そして、SELECT
ステートメントの ORDER BY
節および GROUP BY
節で行うの文字列の照合順序 (コアレーション)
も決定します。
キャラクタ
セットの変更は、サーバ起動時に、--character-set-server
オプションで行い、照合順序には、--collation-server
オプションを使用します。照合順序は設定するキャラクタ
セットと対応するように使用ます。(SHOW
COLLATION
ステートメントでキャラクタ
セットに対応する照合順序を確認します。項4.2.2. 「コマンド オプション」
を参照してください。
利用可能なキャラクタセットは、
--with-charset=
オプションと
charset_name
--with-extra-charsets=
オプションを
configure
しているかどうか、そして
list-of-charsets
| complex | all | none
のキャラクタ
セット設定ファイルに依存します。項2.9.2. 「典型的な configure オプション」
を参照してください。
SHAREDIR
/charsets/Index
注意: MySQL の実行中にキャラクタ
セットを変更すると、ソート順序が変わる可能性もあります。つまり、インデックスが正しい順序ではなくなる可能性があります。結果として、すべての
MyISAM
テーブルで myisamchk -r
-q
--set-collation=collation_name
の実行が必要になります。
クライアントを MySQL サーバに接続すると、サーバがデフォルトのキャラクタ セットをクライアントに送ります。このクライアントは、サーバと接続するためにそのキャラクタ セットに切り替えます。
SQL
クエリの文字列をエスケープする場合は、mysql_real_escape_string()
を使用します。mysql_real_escape_string()
は旧 mysql_escape_string()
関数と同じですが、最初のパラメータとして
MYSQL
接続を扱うときに、適切なキャラクタ
セットをアカウントにエスケープする場合に使用します。
サーバをインストールしたときのパス以外のパスで、クライアントをコンパイルしていて、MySQL
をコンフィギャしたユーザがすべてのキャラクタ
セットを MySQL
のバイナリに組み込んでいない場合があります。そのときは、サーバがクライアントとは異なるキャラクタセットで実行していることを、クライアントに知らせ、必要なキャラクタセットがある場所を、クライアントに指定する必要があります。
それには、--character-sets-dir
オプションを使用して、MySQL の動的キャラクタ
セットを保存しているディレクトリのパスを示します。たとえば、次のようにオプション
ファイルに示します。
[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets
または、クライアントに特定のキャラクタ セットの使用を強制することも可能です。
[client]
default-character-set=charset_name
しかし、このように指定することは、あまりありません。