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]