掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ORACLEデータベースのハングル文字のデータを取得しシートに表示するには? (ID:84828)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# 長文の割に、あまり回答になっていないかも。(;_;) > 知っている範囲で教えていただければ幸いです。 私が経験した多言語対応は、クライアントサーバシステムではなく、 Webアプリケーションにおける物でしたから、お役に立てないかも知れません。 当方の場合は9iでしたので、Oracleのバージョンも違いますし。 今回の問題は、VB側のコーディングでどうにかできる内容ではなく、 Oracle側の環境設定等が重要になってくるでしょうから、VB系の コミュニティよりも、OTN等のOracle系のコミュニティで質問された方が、 より専門的な回答を得られるのでは無いでしょうか。 (個人的には、サポートセンターに問い合わせる事をお奨めします) なお、Oracle9iの場合は、マニュアルの一つに 『Oracle9i Database グローバリゼーション・サポート』 という物があり、そこに、多言語対応に関する資料がありました。 Oracle8にも、同等のマニュアルが無いか、探してみてください。 > 色々聞いてしまいますが、すみません。 私自身も、Oracleにおける多言語対応には非常に興味があるので、 この問題はとても気になります。(^^;) まずは、「どうすれば文字化けしないか」を考える前に 「何故文字化けしているのか」を付き止めないといけませんね。 http://otn.oracle.co.jp/software/tech/java/jdbc/nlsalart/nlsalart.html Oracleにおける文字化けと言うと、大きく分けて ・サーバ内で、DBへの格納時に化けている。 ・クライアントとサーバ間の通信時に、文字コード変換に失敗している。 ・通信は化けていないが、表示時に化けている。 などがあるようです。 正しくDBに格納されているかどうかは、SQL*PLUSから SELECT DUMP(STAFF_NAME) FROM STAFFLIST を実行する事で判定できると思います。 NLS_CHARACTERSET が KO16KSC5601 の時と UTF8 の時とで、それぞれ 正しいバイナリが格納されているかを確認してください。 通信時の問題は、少々厄介かと思います。NLS_LANGの設定が正しかったとしても、 開発言語やミドルウェアが未対応という事も多いですから…。 まずは、SQL文が、DB側の設定と同じキャラクタセット(またはUnicode)にて 送信可能かどうかの判断が必要になるかと思います。さしあたっては、 ハングルを含んだSQL文を送信可能か、また、正しく抽出/編集されるかどうかを 試してみてください。 で、最後の、表示時に化けるかどうかについてですが、これに関しては、 Excel 2000以上であれば、Unicode文字を表示できるはずですので、 フォントさえ用意しておけば、どうにかなると思います。 (VB6等だと、ほとんどのコントロールがUnicode非対応なので、大変ですけど) > (この検証データベースではACCESSのリンク、インポートでちゃんとハングルの値がとれています) あらま。AccessでOKだった、という話は良く聞くのですが、私の環境では どうしても文字が化けてしまうので、ちょっと羨ましいです。(^^;) # mdb自身の[照合順序設定]も変えないといけなかったのかな…? 参考までにお聞きしたいのですが、リンクテーブルという事は、 すなわち「ODBC接続」という事になりますよね。 そのODBCドライバというのは、何を使っておられるのでしょうか。 MERANT(INTERSOLV)の物ですか? Oracle標準? それともMicrosoft製? > 一応テスト環境で前述しているフォントにArial Unicode MSを追加して、 > 実施してみたのですがうまくいっていません。(StrConvは使用していません) Accessで表示できるという事は、Unicode対応フォントもインストール済みですね。 そうすると、別の部分に問題があるのでしょう。(何が原因かはわかりませんが…) > NLS_LANG=JAPANESE_JAPAN_UTF8を設定したり NLS_LANG変数は、「(クライアント言語)_(地域).(文字セット)」となります。 つまり、『JAPANESE_JAPAN_UTF8』ではなく、『Japanese_Japan.UTF8』かと思います。 ただし、これを設定すると、データがUTF8でやりとりされる事になりますので、 文字コード切り替えに対応していないツールだと、画面表示が化けてしまうかも知れません。 > レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0のNLS_LANGに 関係あるかどうかはわかりませんが、 http://www.magicsoftware.co.jp/mginfo/library/userlib/v8/o8reg100.htm を見ると、8と8iでも、レジストリ位置に差があったりするのかも知れません。 > VARCHAR2もしくはCHARになっていると思います。 CHAR型があったとすると、ちょっと面倒ですね。先の回答にも少し書きましたが、 UTF8にすると、Recordset.Fields(x).Value による編集ができなくなる可能性が あります。(なお、KO16KSC5601だった場合についてはわかりません…) > ミドルウェアはExcelにあたるのでしょうか…。 ExcelとOracle間の接続ミドルウェアは何ですか? レコードセットで取得しているとの事でしたから、oo4oやRDOでは無く、 ADOかDAOによる接続だと思いますが、それらに限ってみたとしても、 細かくみると、さらにいろいろな形態が存在しますよね。 ・ODBCDirect + MS製Oracle ODBCドライバ ・DAO 3.6 + Jetリンクテーブル + MERANT製Oracle 8 ODBCドライバ ・ADO 2.8 + Jetリンクテーブル + Oracle製ODBCドライバ + Microsoft Jet 4.0 OLE DB Provider ・ADO 2.8 + Microsoft OLEDB Provider for Oracle ・ADO 2.8 + Oracle Provider for OLE DB など…。 > 例えばどんな設定が必要になりますか。 ODBCドライバ(あるいはOLE DBプロバイダ)によって、設定も異なるようです。 文字コード設定ができるか部分については不明ですが、接続文字列等でパラメータを 指定する物もあれば、レジストリや環境変数の設定が必要がある物など、いろいろな設定が 個々の設定に付いての細かい事はわかりませんが、場合によっては、 TO_NCHAR関数を使うなどの対応が必要かも知れません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.