MySQLとJavaの間でのデータのやり取りに際して・・・。
自動変換は、Unicodeを基準にしてそれぞれのキャラクタセットに変換しているので、データベース自体はUnicode(utf8)で良い。
・データベースから抽出して表示
・クライアントから入力した日本語で検索する
のもこれでOK! (バージョン4.1以降)
MySQLとのやり取りでは、文字コード変換メソッドが不要になる。
Jspには、ページコンテキストでキャラクターセットを指定する。
<%@ page contentType="text/html; charset=Windows-31J" %>
1)クライアントのキャラクターセットを cp932 にする
----------
mysql>SET NAMES cp932;
----------
※MySQLの cp932 とは、Javaの"Windows-31J"に対応してるキャラクターセット。
※SJP側で、MySQLに接続した直後 SET NAMES cp932 を流すこと。
※ちなみに、Mysqlのキャラクターセットを確認するには、このコマンド
----------
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | cp932 | ★クライアントから入力された文字のキャラクタセット
| character_set_connection | cp932 | ★テーブルアクセスの無いサーバ処理のキャラクタセット
| character_set_database | utf8 | ◎CREATE DATABASEのデフォルトキャラクタセット
| character_set_results | cp932 | ★返された結果を表示するキャラクタセット
| character_set_server | utf8 | ◎CREATE TABLEのデフォルトキャラクタセット
| character_set_system | utf8 |
+--------------------------+--------+
6 rows in set (0.00 sec)
----------
★ クライアントプログラム起動時の --default-character-set が影響する
mysql>SET NAMES cp932; で変更できる
◎ MySQL起動時の --default-characterset が影響する
2)データベース自体は、キャラクターセット utf8 で作る
----------
mysql>CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;
----------
3)テーブルを作る
3-1)itemテーブルの作成
----------
use sampledb;
create table item(
id integer not null unique,
name text not null,
price integer not null,
primary key(id));
----------
■参考サイト
http://www.iana.org/assignments/character-sets
MySQL日本語処理完全解説
http://www.scs.co.jp/mysql/
最終更新:2008年05月27日 22:25