- ベストアンサー
クライアントとサーバーのキャラクタセットの設定について
- クライアントとサーバーのキャラクタセットの設定について質問です。現在、開発PCとOracleDBインスタンスのあるサーバーPCで開発を行っており、開発PCからOracleDBインスタンスに接続してDBの値を取得しています。しかし、日本語が表示されず「???」と表示されてしまいます。内部処理のエンコードの問題だと思いますが、コンパイル後に作成したWEBアプリをDBと同じサーバーにアップすると文字化けが起こらないです。どなたか解決策を教えていただけますか。
- WindowsXPとVisualStudio .NET 2003 + OracleにてASP.NET 1.1の開発を行っています。開発PCとOracleDBインスタンスのあるサーバーPCで開発を行っており、開発PCからOracleDBインスタンスに接続してDBの値を取得しています。しかし、日本語が正しく表示されず「???」と表示されてしまいます。ASPX側はSHIFT-JISのエンコードを指定しており、Web.configの宣言はutf-8を指定しています。また、Oracle側のNLS_CHARACTERSETはJA16SJISです。解決策を教えてください。
- クライアントとサーバーのキャラクタセットの設定についてお尋ねします。開発PCからOracleDBインスタンスに接続してDBの値を取得しているのですが、日本語が「???」と表示されてしまいます。ASPX側はSHIFT-JISのエンコードを指定しており、Web.configの宣言はutf-8を指定しています。Oracle側のNLS_CHARACTERSETはJA16SJISです。どなたか解決策を教えていただけませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
.NET Framework Data Provider for Oracl ↑これはフレームですよね フレームって、それ自体にドライバの機能は無く、どれかのドライバを利用する単なるインターフェースじゃないのかなぁ (違っていたらすいません) 遠い記憶で申し訳ないですが、私の時も ・SQLPLUSでは、文字化けしない ・クラサバアプリでのみ発生(ただし、全端末で発生するわけではない) ・その文字化けする端末から、oo4oを利用したアクセスのリンクテーブルでデータを見ると、文字化けする だったと思います。 オラ10以降はあまり経験がないので、、、 もしそちらで試して結果が出たら、こちらが教えて欲しいぐらいです。 (ん?質問者が入れ替わった?w)
その他の回答 (2)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
#1で「オラ8」と言っていましたが、「オラ9」でした。 かなり前で記憶があいまい^^;;
補足
ありがとうございます。 情報不足ですいません。 10G なのですが、この事象は9i 以降で起こっているみたいなので、参考になりました。 「.NET Framework Data Provider for Oracle」 を利用しており、 oo4o 、でも ODBC 、ODP でもなかったのですが、 もしかして、上記を利用する、もしくは、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12324&forum=7 ここを徹底的に、調査して、テストすれば、解決するかもしれないですかね。 あと、クライアント開発PC の SQLPLUSや、EM のSQLからサーバーDBにselectを かけた場合は、文字化けは起こりませんでしたので、 VS2003 と サーバーORACLE 10g の組み合わせのデバッグで文字化けが起こってました。 VS の NLS_LNG SJISTILDE ORACLE10G の DBは SJISTILDEで作成 SJIS インポート後に SJISTILDを再設定しております。 また、明日、週明けでも、~ ~ウェイブはどうか、「顧客」等文字化けしているSJISは インサートした時はどうか等、テストしてみます。 ありがとうございました。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
解決方法ではありません。 しかし以前に、オラ8での文字化けを経験したことがあり、同様な質問があがったときに答えたことがあります。 http://okwave.jp/qa/q1785079.html oo4oとODBCのどちらのドライバを利用しているかによって、文字化けが出る/出ないも異なります。 オラクルのバージョンが「8」に限った体験ですので、バージョンが違ったなら無視してください。
お礼
申し訳ありません。 通常の場合、文字化けは、クライアント側のNLS_LANGの設定と クライアントアプリケーションがセットする文字列値の文字コードの 不一致が原因です。 この部分で、 自分の設定が間違っていたようでした。 クライアント側の環境変数は NLS_CHARCTERSET JA16SJIS と書きましたが、設定しておりませんでした。 また NLS_CHARCTERSETではなく NLS_LANG でした。 クライアント側の環境変数は NLS_LANG JAPANESE_JAPAN.JA16SJIS とすべきところを設定しておりませんでした。 レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1 NLS_LANG の 変数値は JAPANESE_JAPAN.JA16SJIS に設定していたので、システム環境変数も JAPANESE_JAPAN.JA16SJIS に設定していると思い込んでました。 クライアント側の環境変数は NLS_LANG JAPANESE_JAPAN.JA16SJIS レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1 NLS_LANG の 変数値は なし に設定しても文字化けはしません。 ソリューションは クライアント側の環境変数は NLS_LANG JAPANESE_JAPAN.JA16SJIS です。 ちなみに JAPANESE_JAPAN.JA16SJISTILDE にせずとも、 ~ ~ の文字化けはおきておりませんので、 JAPANESE_JAPAN.JA16SJIS にしております。