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/

Antはプラットフォームに依存しないJavaプログラムとして記述されているので、Antのバイナリをソースコードに添付することで、常に正しくビルドファイルを処理できる環境を保障できる“ビルドツール”。


※ビルドファイルはXMLで記述する

※ソースファイルを実行する状態にすることをビルドという


今回はバイナリ版 apache-ant-1.6.5 をインストール

http://ant.apache.org/bindownload.cgi

ダウンロードした apache-ant-1.6.5-bin.zip を解凍

apache-ant-1.6.5 というフォルダができるので、フォルダ名を ant に変更

C:\ant に置く


環境変数を設定する。

----------

変数名 ANT_HOME

変数値 C:\ant

----------

----------

変数名 Path

変数値 C:\ant\bin

----------

★web.xml には、こんなことを書く 

--web.xml--

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">

<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>

<servlet>
<servlet-name>MainController</servlet-name>
<servlet-class>ecsite.MainController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainController</servlet-name>
<url-pattern>/mainController</url-pattern>
</servlet-mapping>


</web-app>


★コンテキスト記述子 (sampleapplicationという名前のWebアプリケーションの登録をする)

C:\Tomcat5\conf\Catalina\localhost\sampleapplication.xml

----------

<Context path="/sampleapp"
docBase="C:\eclipse\workspace\mvcExample" reloadable="true">
<Resource
name="jdbc/mydata"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="mysql"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/ecsite?useUnicode=true&amp;characterEncoding=UTF-8"/>
</Context>
----------