NEC選定IBM拡張文字とIBM拡張文字の悩み

お題:Connector/JがWINDOWS-31Jを正しく扱えることを確認したい

MySQLへ突っ込まれた文字のHEXを見ていたら,NEC選定IBM拡張文字のUnicode Hexで定義した文字が,DB側ではIBM拡張文字になっていたのを見つけました.

この両者の違いを余りよく理解していなかったようなのですが,NEC選定IBM拡張文字というのはIBM拡張文字のうち,NEC拡張文字(row13)に含まれていないものをNEC PC98等でも使えるようにするために追加したのがそもそもの始まりだったんですね.

J2SEUnicodeからWINDOWS-31Jへ変換する際,IBM拡張文字として復元するのがお好みのようです.

となると,Connector/JはどうがんばってもNEC選定IBM拡張文字としてMySQLへ文字を格納することはできませんね.

しばし悩んだ結果,私は「別にこれはこれでいいじゃん」との結論に至りました.

JavaにInputされる以前のデータがNEC選定IBM拡張文字であろうがIBM拡張文字であろうが,JavaにInputされた(Stringインスタンスとなった)時点で両者の区別は一度失われる(Unicodeでは双方同じコード)ため,そしてそれがConnector/Jへの入力データとなるため,Connector/Jを使うJavaアプリケーションからすればどちらでもいいはずです.

もし「いやNEC選定IBM拡張文字としてMySQLへ格納してくれないと嫌だ」と言われても,J2SEがやっていることなのでConnector/Jはどうしようもありません.Sunに文句を言ってください.

ということでConnector/JへNEC選定IBM拡張文字を使ってテストをすることにはあまり意味は無いのですが,テストデータをちゃんと揃えるという観点からは合ったほうが良いと思いますのでそういう意味で使えばいいかなと.