入稿原稿をウェブに載せておきました
JAVA PRESS Vol.8 サポート
Java2 の日本語対応調査結果 関連情報 |
訂正.Java2 の日本語対応調査結果
執筆後 誤りが発見されたので、これに対する訂正を出させていただきます。
p13後半からp14前半にかけて Java2の日本語対応調査を行っていますが、このプログラムにおいて 読み込みは "SJIS" エンコードを利用して 書き込みは "デフォルト" エンコードを利用しています。私は 執筆時点において Windows版J2SDK1.2.2 を日本語で利用する場合のデフォルトエンコードは "SJIS" だと誤認しておりました。
この点が誤りでして、実際には Windows版 J2SDK1.2.2 の日本語のデフォルトエンコードは "MS932" という名称のエンコードでした。(これに関しては J2SDKのソースコードを見ることによって確認いたしました)。その後の調べにより "MS932" は "SJIS" と酷似したエンコードであるということがわかりました。酷似しているだけでイコールではありませんでして、いくつかのケースにおいて コードのマッピングが異なるケースがあることがわかってきました。記事にあるような SJISで 8160 8161 817c および NEC選定IBM拡張文字やIBM拡張文字などのエリアは このマッピングの相違によって 上記勘違いも併せもって 元に戻らない問題が発生していたようです。
間違ってしまった背景ですが、この記事の執筆時点においては Windows版J2SDK1.2.2の日本語エンコードは "SJIS" であろうと 大多数の情報源では誤認されておりました。(もちろん 一部の先駆者の方々は この問題に付いて把握されていたようです)。私も Windows版J2SDK1.2.2の日本語エンコードは "SJIS" と誤解し これを利用していたために このような誤りを犯してしまいました。
引き続き J2SDK1.2.2の日本語エンコードは "MS932" であることは 正に正しいのかどうかの点や なぜ "SJIS" と "MS932" とは異なるマッピングで実装されているのかなどの点に付いて 調査を継続し、新たな情報が分かり次第 ここに情報を載せるよう努めてまいります。ご理解のほどを どうぞよろしく お願いいたします。この問題は 私たち日本語Javaプログラマーにとっては 非常に重大な問題です。(情報源によっては 現時点においても "MS932" は "SJIS" のエイリアスであるとの意見もあるのです)
なお Oracleを経由することにより 復元されているコードについては Oracleのマッピングが親切なエンコードを行っていることにより発生しているものと思われます。
関連する情報源
追加情報.SUN JDKなどに エンコードに関する動きがありました
(2000/07/11)
ここ最近 JDK1.1.8がリリースされていますが、JDK1.1.8での変更点に興味深い情報が載っていました
JDK1.1.8にも MS932コードページが "正しく" 追加されたのだそうなのです。ただし それでも少し悩ましいのは JDK1.1.8のデフォルトコンバータは JDK1.1.7以前と同様 "SJIS" であるという点です。そのため MS932コードページを利用したい場合は 明示的に指示を行う必要がありますね。
なお この件に関して 下記のような詳細情報が載ったページがあります。
追加情報. 2000/07/20 Javaプログラミング・ノート -国際化と日本語処理- 著者: 風間一洋 ISBN 4-7561-3481-5 という本が発売されまして、これに これらUnicodeの問題など 日本語処理に関わる情報が 大変詳しく掲載されています。Javaの日本語処理に興味を持たれている方は是非ご覧ください。
JDBC-ODBC Bridge関連情報 |
追加情報.SUN Java2 SDK 付属の JDBC-ODBC Bridgeについて
(2000/07/11)
つい先日 Java2 SDK 1.3 SE Windows版および
Java2 SDK 1.2.2_005 SE Windows版がリリースされました。これらのバージョン以降のものを使うことにより、(ようやく)
JDBC-ODBC Bridge (JDBC Type1) 環境下において
日本語が完全に通過可能になりました。
Java2 SDK 1.3 および Java2 SDK 1.2.2_005以降においては、本記事において扱ったような
日本語SQLの導通不具合や 日本語データの設定&取得に関する不具合などは完全に解決されている模様です。
これにより 私たちは 安心して JDBC-ODBC Bridge
(Type1) を利用することが可能になりました。具体的には
Microsoft SQLServer や Microsoft Access (MDB)
などに対する Javaプログラムからのアクセスが
日本語を気にせずに利用することが可能になったのです(!)
SUN社の対応に感謝いたしますとともに、みなさまの
さらなる Java生活が充実いたしますことを、心よりお祈りいたしております。
追加情報.Microsoft JDBC-ODBC Bridgeについて (1999/10/26)
JAVA PRESS読者の方(Y.Yさん) から Microsoft JDBC-ODBC Bridge についての情報の提供と質問をいただきました。JDBC-ODBC Bridgeで お困りの方の一部の方々には結構有意義な情報だと思いますので、ここに追加情報として記載させていただきます。
初めまして、JAVA Press読者のY.Y と申します。
私はJava屋さんではありませんで、最近Javaをチョットはじめたばかりで何も解っていませんの失礼があるといけないので先に謝っておきます。
JAVA Press Vol.8の「Javaデータベース技法と日本語事情」で書かれていた、MicrosoftのSQLServer用JDBCドライバが無い件についてです。
ご存知だと思いますが、MicrosoftのJDBC-ODBC Bridgeが出ています。もちろん、SQL文に日本語が入っていてもOKです。
例 SELECT name FROM xxx WHERE name LIKE '伊賀%'
ただ、このJDBC-ODBC BridgeはMicrosoft J++のSDKに入っているんです。JSDK1.2.2がインストールされているマシンにこのMicrosoftのSDKをインストールすると、当然の如くJ++環境に変身します。
そこでなんですが、このMicrosoft JDBC-ODBC BridgeをJava環境で使えるようには出来ないものなんでしょうか?もし、挑戦する意義があると思われたら、お時間の許す範囲でお願いできないでしょうか?
本当は自分でやりたいんですが、最初に書いたとおりJavaは素人で何がどうなっているんだかサッパリ解らないんです。
最後に、MicrosoftのJavaのページです。ここからJDBC-ODBCBridgeを含んだJSDK3.1がダウンロードできます。
http://www.microsoft.com/japan/java/
・・・(以下省略させていただきました)
貴重な情報をお寄せいただき、ありがとうございます。
順を追って説明させて頂きますが、
1.まず最初に 『私は Microsoft社が Microsoft JDBC-ODBC Bridgeを出していることを知りませんでした。』
これは もともと 下記のような Javaの世界における Microsoftの立場ゆえに Microsoft関連情報を追ってこなかったことが原因なんです。
このような事で 全く知りませんでしたので、Microsoft JDBC-ODBC Bridge という名称を聞いたときには 結構期待しました。
2.ご質問にある、Microsoft JDBC-ODBC Bridge を これだけ取り出して SunのJDKなどに組み込みたいとのご質問ですが、
下記のような理由から無理っぽいです
- Microsoft JDBC-ODBC Bridgeは Microsoft JavaVM のコアな部分に統合されていて不可分である。
と WWWページに書いてありました。(Microsoft の JSDK3.1に統合されているわけでは無さそうです)- ダウンロードして見てみましたが、とりあえず Microsoft JSDK3.1 に有効な再配布可能ファイルはありませんでした。
- よしんば技術的ななんらかの手法により Microsoft JavaVM を取り出すことが出来たとしても、Microsoft JavaVM のライセンス条件では部分的な再配布は認められていないようなので、これを法律的な理由から実施することができない。
しかし 何が何でも無理というわけでもありませんで、下記のように考えれば 十分に利用可能だとも考えられますし、これで 全ての問題が解決 という方も 結構いらっしゃるのでは無いかと思います。
3.JavaVM として Microsoft の JavaVM を前提条件として考える。(Microsoft JavaVM だって、立派な JRE1.1.x レベルのJavaVMなんです)
4.Microsoft JavaVM のデメリットについて 主なものを下記に示します
5.Microsoft社は これとは別に インターオペラビリティーツールというJava関連のソフトを出していたはずです。これも もう少し調べてみようと思います。
6.少し他力本願的に考えてみて、現状よりも 更にJavaが流行ると、もしかしたら Microsoft社が Microsoft JDBC-ODBC Bridge を別モノとして配布し出す可能性があります。こうなれば Y.Y さんのご希望通りのことが実現されます。
お答えになっておりますでしょうか、、、:-)
2000/07/11 後日談 状況は その後変化し、とうとう SUN社から 日本語が問題なく利用可能な Java2 SDK 1.3 および Java2 SDK 1.2.2_005 がリリースされました。この詳細については このページの上の方に記載があります。
追加情報. 2000/07/20 JDBCドライバの最新情報について、JAVA PRESS Vol.13 p27 『JDCドライバ&SQLJトランスレータ最新情報』に詳しい情報が載っています。
Microsoft SQLServer 2000用JDBCドライバ関連情報 |
2002.07.23 追記 いよいよ SQLServer に 純正 JDBC Type4 ドライバ経由で接続可能な時代が到来しました。
JDBC-ODBC Bridgeを経由せずとも 純正 JDBCドライバ経由で MS SQLServer に接続できる、というすばらしい時代が来たのです。良かったですね。
midori.iga@nifty.ne.jp | トップへ |