JDBC
ドライバからサーバへ送られた、Statement.execute()
、Statement.executeUpdate()
、Statement.executeQuery()
を介して送られたクエリ、そして、set-
Bytes()
、setBinaryStream()
、setAsciiStream()
、setUnicodeStream()
、および
set- Blob()
を使用するパラメータ
セットを除く
Prepared- Statement
および
CallableStatement
パラメータを含むすべてのストリングは、元来の
Java Unicode 型から
クライアント側の文字エンコードに自動的に変換されます。
MySQL Server 4.1 より前では、Connector/J
は、サーバ構成から自動的に検出が可能な、もしくは
useUnicode
および
characterEncoding
プロパティを通じてユーザが構成することができる、接続当たりの単一文字エンコードをサポートしていました。
MySQL Server 4.1 からは、Connector/J
はクライアントとサーバ間の単一文字エンコードと、Result-
Sets
でサーバによってクライアントに返されたデータの文字エンコードのすべての数をサポートしています。
クライアントとサーバ間の文字エンコードは、接続に基づいて自動的に検出されます。ドライバに使用されるエンコードは、4.1.0
より前のバージョンのサーバでは
character_set
システム変数、4.1.0
以降では character_set_server
を介して、サーバで特定されます。詳細は
項9.3.1. 「サーバのキャラクタセットおよび照合順序」 をご覧ください。
クライアント側の自動検出エンコードをオーバライドするには、サーバへの接続に使用される
URL の characterEncoding
プロパティを使用します。
クライアント側で文字エンコードを特定する際、Java スタイルの名称を使用してください。次の表は MySQL 文字セット用の Java スタイルの名称のリストです :
MySQL から Java エンコード名への変換.
MySQL 文字セット名 | Java スタイル文字エンコード名 |
ascii | US-ASCII |
big5 | Big5 |
gbk | GBK |
sjis | SJIS (or Cp932 or MS932 for MySQL Server < 4.1.11) |
cp932 | Cp932 or MS932 (MySQL Server > 4.1.11) |
gb2312 | EUC_CN |
ujis | EUC_JP |
euckr | EUC_KR |
latin1 | ISO8859_1 |
latin2 | ISO8859_2 |
greek | ISO8859_7 |
hebrew | ISO8859_8 |
cp866 | Cp866 |
tis620 | TIS620 |
cp1250 | Cp1250 |
cp1251 | Cp1251 |
cp1257 | Cp1257 |
macroman | MacRoman |
macce | MacCentralEurope |
utf8 | UTF-8 |
ucs2 | UnicodeBig |
注意. ドライバは文字セットの変更を検出できず、最初の接続セットアップで検出された文字セットを使い続けるため、Connector/J で 'set names' クエリを発行しないでください。
クライアントからの複数の文字セットの送信を許可するには、UTF-8
の使用が必要です。utf8
をデフォルトのサーバ文字セットとして構成するか、characterEncoding
を通して UTF-8 を使用するよう JDBC
ドライバを構成してください。