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

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]