mysql:10296
From: "Matsunobu, Yoshinori" <"Matsunobu, Yoshinori" <Yoshinori.Matsunobu@xxxxxxxxxx>>
Date: Wed, 6 Oct 2004 15:33:26 +0900
Subject: [mysql 10296] Re: (株)、(有)などの文字化け回避方法について
松信です。
すみません、
昔調べていてすっかり忘れてしまっていたのを今思い出しました。
4.1系でも、5.0系でも、Connector/Jの3.0系を使う限り、
JVM上にSELECTした時点でsjisのベンダー定義文字は化けてしまいます。
これは、Connector/Jの3.0系では、
mysqlEncoding=sjisと指定してあれば、
JVMがその文字をSJISであると認識して読みに行くように
実装されているからです。
ここをWindows-31JやMS932であると認識して読みに行くようにソースコードを書き換えれば
ベンダー定義文字は化けなくなります。
(mysqlEncodingは、文字通りMySQLのキャラクタセットを指定しなければならないので、
ms932とかwindows-31jとかいった指定はできません)
ベータ版の3.1系ではまだ実機では試していませんが、
マニュアルを見る限りでは直っていないですね。
バグとも言いづらい(と個人的には思う)部分ですし。
対処法としては、現時点では
1.MySQL4.0系を使う
2.MySQL4.1以降を使わざるを得ないなら、キャラクタセットをutf8にする
3.Connector/J 3.0のソースコードを修正する
といったところでしょうか。
もしソースコードを変更される場合は、
com.mysql.jdbc.CharsetMapping.javaの
tempMap.put("sjis", "SJIS");
という行を、
tempMap.put("sjis","MS932");
に書き換えてビルドし直せば良いことを実機で確認しています。
-------------------------------------------
松信 嘉範(Matsunobu Yoshinori)
yoshinori.matsunobu@xxxxxxxxxx
-> 10296 2004-10-06 15:33 ["Matsunobu, Yoshinor] Re: (株)、(有)などの文字化け回避方法について 10300 2004-10-06 21:03 ┣["Makoto Goto" <gmako] 10308 2004-10-08 13:39 ┗["Makoto Goto" <gmako]