デフォルトのサーバー文字セットおよび照合順序は,サーバー起動時に,——character-set-server
オプションと——collation-server
オプションで変更できます。照合順序は,デフォルト文字セットの正当な照合順序である必要があります。(各文字列セットに使用できる照合順序を特定するには,显示排序
ステートメントを使用します)。セクション5.1.3”サーバーコマンドオプション”を参照してください。
バイナリにコンパイルされない文字セットを使用しようとすると,次の問題が生じることがあります。
文字セットが格納される場所(通常,MySQLインストールディレクトリ下の
分享/ mysql /数据集
または分享/数据集
ディレクトリ)を判断するときに,プログラムが不正なパスを使用します。これは,該当プログラムを実行するときに——character-sets-dir
オプションを使用することによって修正できます。たとえばMySQLクライアントプログラムで使用されるディレクトリを指定するには,オプションファイルの(客户端)
グループに記述します。ここに挙げる例は,それぞれUnixまたはWindowsの場合に設定がどのようになるかを示します。[client] character-sets-dir="C:/Program Files/ mysql/ mysql Server 5.6/share/charsets"
文字セットは,動的にロードできない複雑な文字セットです。この場合,文字セットのサポートを使用してプログラムを再コンパイルする必要があります。
Unicode文字セットの場合,LDML表記を使用することによって,再コンパイルせずに照合順序を定義できます。セクション10.4.4”Unicode文字セットへのUCA照合順序の追加”を参照してください。
文字セットは動的な文字セットですが,その構成ファイルがありません。この場合,新しいMySQL配布から文字セットの構成ファイルをインストールする必要があります。
文字セットインデックスファイルに文字セットの名前が含まれていない場合,プログラムはエラーメッセージを表示します。このファイルの名前は
Index.xml
で,メッセージは次のとおりです。字符集”charset_name'不是编译字符集,也没有在'/usr/share/mysql/charsets/Index.xml'文件中指定
この問題を解決するには,新しいインデックスファイルを取得するか,欠落している文字セットの名前を手動で現在のファイルに追加する必要があります。
次のようにしてクライアントプログラムに強制的に特定の文字セットを使用させることができます。
[客户]default-character-set =charset_name
これは通常は不要です。ただし,character_set_system
がcharacter_set_server
またはcharacter_set_client
と異なり(データベースオブジェクト識別子またはカラム値,あるいはその両方として)手動で文字を入力した場合,これらの文字はクライアントからの出力に間違って表示されたり,出力自体が間違って書式設定されたりすることがあります。このような場合,——default-character-set =
を使用してMySQLクライアントを起動し,システム文字セットに一致するようにクライアント文字セットを設定すると,問題が修正されます。system_character_set
MyISAM
テーブルでは,myisamchk -dvvtbl_name
を使用するとテーブルの文字セットの名前および数値を確認できます。