mysql:6088
From: "HIROSE, Masaaki" <"HIROSE, Masaaki" <hirose31@xxxxxxxxxx>>
Date: Thu, 05 Sep 2002 11:22:53 +0900
Subject: [mysql 06088] Connector/J 2.0.14 で BINARY キーワード付きカラムの値が正しく得られない
初めまして。ひろせといいます
次のような環境
サーバー
Red Hat Linux 7.2 / glibc 2.2.4
MySQL 3.23.52 / default-character-set = sjis オプション付きで起動
クライアント
Red Hat Linux 7.2 / glibc 2.2.4
Java アプリケーション
J2SE 1.3.1_01
Connector/J 2.0.14 / useUnicode=true&characterEncoding=Shift_JIS
オプション付きで接続
で、
CREATE TABLE tbin ( c VARCHAR(32) BINARY );
なテーブルへの insert, update はうまくいくのですが、select すると
"[B@~" という文字列に文字化けしてしまいます。日本語でも US-ASCII な文
字列でもです。
どうも原因は BINARY キーワードで、実行環境は全く同じで、BINARY キーワー
ドが付いていないテーブル
CREATE TABLE t ( c VARCHAR(32) );
に対しては期待通りの文字列が得られます。
これは既知の問題なのでしょうか?
また、対応策として以下のものを考えたのですが、これら以外に何かよい案が
あればご教授願いたいです。
# 今のところ、Connector/J 3.0.0-beta を使おうと思っています。
o Connector/J 3.0.0-beta を使う
o CREATE TABLE 時に BINARY キーワードをつけないで、比較演算を行う場
合は BINARY 演算子を使って大文字小文字の区別をするようにする。
ただし、INSERT, UPDATE 時は "hirose" も "HiRoSe" も同値とみなされ
るので、一意制約がついている場合は注意が必要。
o CREATE TABLE 時に BINARY キーワードをつけて、BINARY キーワードがつ
いたカラムの値を得るときは ResultSet.getString ではなくて、
new String(ResultSet.getBytes(1), "Shift_JIS") を使う。
--
ひろせ