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") を使う。 -- ひろせ