[前][次][番号順一覧][スレッド一覧]

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


-- 
ひろせ

[前][次][番号順一覧][スレッド一覧]