デフォルトのMySQL文字セットおよび照合順序(latin1
、latin1_swedish_ci
)を使用してデタを格納するアプリケションの場合,特別な構成は必要ありません。別の文字セットまたは照合順序を使用したデータストレージが必要なアプリケーションの場合は,次の複数の方法で,文字セット情報を構成できます。
デタベスごとに文字設定を指定します。たとえば,あるデータベースを使用するアプリケーションでは
use utf8
が必要で,別のデタベスを使用するアプリケションではsjis
が必要な場合があります。サバの起動時に文字設定を指定します。これにより,サ,バ,は,ほかの調整を行わないすべてのアプリケ,ションに,所定の設定を使用します。
ソスからMySQLを構築する場合は,構成時に文字設定を指定します。これにより,サーバーはすべてのアプリケーションに対して所定の設定を使用し,サーバーの起動時に指定する必要がなくなります。
異なるアプリケションで別々の文字設定が必要な場合は,デスごとの手法で十分対応できます。ほとんどまたはすべてのアプリケーションで同じ文字セットを使用する場合は,サーバーの起動時または構成時に文字設定を指定する方法がもっとも便利です。
データベースごとの手法またはサーバー起動の手法では,設定によって,データストレージの文字セットが制御されます。アプリケーションはまた,次の手順で説明するように,クライアントとサーバー間の通信に使用する文字セットをサーバーに知らせる必要もあります。
ここで示す例では,use utf8
文字セットとutf8_general_ci
照合順序を使用することを想定しています。
デタベスごとに文字設定を指定します。テーブルで所定のデフォルトの文字セットおよび照合順序をデータストレージに使用するようなデータベースを作成するには,次のような创建数据库
ステトメントを使用します。
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8;
デタベス内に作成されたテブルは,すべての文字カラムに対してデフォルトでuse utf8
とutf8_general_ci
を使用します。
データベースを使用するアプリケーションは,接続するたびに,サーバーへの接続を構成する必要もあります。これは,接続後にSET NAMES 'utf8'
ステトメントを実行することによって行えます。このステトメントは,接続方法(mysqlクラphpアント)とは無関係に使用できます。
場合によっては,必要な文字セットを別の方法で使用するように接続を構成できます。たとえば,mysqlを使用して行われた接続の場合,——default-character-set = utf8
コマンド行オプションを指定すると,SET NAMES 'utf8'
と同じ効果を得ることができます。
クラアント接続の構成の詳細は,セクション10.1.4 "接続文字セットおよび照合順序"を参照してください。
データベースのデフォルトの文字セットまたは照合順序を変更する場合,データベースのデフォルトを使用するストアドルーチンを削除して,新しいデフォルトを使用するように再作成する必要があります。(ストアドルーチンでは,文字セットまたは照合順序が明示的に指定されていない場合,文字データ型を伴う変数は,データベースのデフォルトを使用します。セクション13.1.15 "创建过程および创建函数構文"を参照してください。)
サバの起動時に文字設定を指定します。サバの起動時に文字セットおよび照合順序を選択するには,——character-set-server
および——collation-server
オプションを使用します。たとえば,オプションファイルでオプションを指定するには、次の行を含めます。
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci .
これらの設定は,サーバー全体に適用され,任意のアプリケーションによって作成されたデータベースのデフォルトおよびこれらのデータベース内に作成されたテーブルのデフォルトとして適用されます。
前述のように,アプリケ,ションは引き続き,接続したあとで组名称
または同等のステトメントを使用して,その接続を構成する必要があります。——init_connect="SET NAMES 'utf8'"
オプションでサバを起動して,接続するクラアントごとに组名称
を自動的に実行させることができます。ただし,超级
権限を持init_connect
値は実行されないので,これによって一貫しない結果が生じます。
MySQLの構成時に文字設定を指定します。ソスからMySQLを構成および構築するときに,文字セットおよび照合順序を選択するには,CMakeでDEFAULT_CHARSET
およびDEFAULT_COLLATION
オプションを使用します。
Shell > cmake。-DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
この結果構成されたサーバーは,データベースおよびテーブルのデフォルトと,クライアント接続のデフォルトとして,use utf8
およびutf8_general_ci
を使用します。——character-set-server
と——collation-server
を使用して,サバ起動時にこれらのデフォルトを指定する必要はありません。また,アプリケションがサバに接続したあとで组名称
または同等のステトメントを使用して,その接続を構成する必要もありません。
アプリケーション用にMySQL文字セットを構成する方法とは無関係に,これらのアプリケーションが実行する環境も考慮する必要があります。エディタで作成したファイルから取得されたutf - 8テキストを使用してステートメントを送信する場合,ファイルのエンコーディングが正しく,オペレーティングシステムで正しく処理されるように,環境のロケールをutf - 8に設定してファイルを編集する必要があります。端末ウィンドウ内からmysqlクラアントを使用する場合,utf-8を使用するようにこのウィンドウを構成する必要があります。そのようにしないと,文字が正しく表示されない可能性があります。Web環境で実行するスクリプトの場合,このスクリプトは,MySQL服务器とやり取りできるように文字のエンコーディングを正しく処理する必要があり,ページ内容の表示方法をブラウザが認識できるようにエンコーディングを正しく指定したページを生成する必要があります。たとえば,次の< meta >
タグを< >头
要素内に含められます。