VB6、WinXpでOrcale9を利用しデータを取得したところ、
「〜」(チルダ)が正常に取り込めません。
文字コード設定もしくは、select文などに何か指定が必要でしょうか?
これは、文字コードの相互変換における、有名な問題だったりします。
OTNの掲示板でも、時折話題になっていますね。
http://otn.oracle.co.jp/forum/index.html
Oracle側の文字コード設定がどうなっているのかを、
データベースの管理者に確認してもらってください。
文字コード設定が「JA16SJIS」になっているのであれば、それを
「JA16SJISTILDE」にする事で回避できるかと思います。
なお、JA16SJISTILDE でデータベースを構築するには、
Oracleの R9.0.1.4以上が必要となります。
それ以前のバージョンを使用している場合は、製品間の
「WAVE DASH」と「TILDE」の割り当ての違いを吸収するために、
自分で、(VBのReplace関数を使うなどして)事前/事後変換を
行うようにしてみてください。
(googleで『JA16SJISTILDE』を検索すると、関連情報が見つかるでしょう)
魔界の仮面弁士さん、ありがとうございます。
おっしゃるように下記のように設定してみましたが、
うまくいきません。
NLS_LANGUAGE JAPANESE
NLS_TERRITORY JAPAN
NLS_CURRENCY \
NLS_ISO_CURRENCY JAPAN
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT RR-MM-DD
NLS_DATE_LANGUAGE JAPANESE
NLS_CHARACTERSET JA16SJISTILDE
NLS_SORT BINARY
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT RR-MM-DD HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT RR-MM-DD HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY \
NLS_NCHAR_CHARACTERSET UTF8
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
設定が間違えているのでしょうか?
またクライアント側の設定も変える必要がありますか?
> またクライアント側の設定も変える必要がありますか?
文字コードが変換される事を防ぐため、クライアント側とサーバ側の
両方の環境変数を、Japanese_Japan.JA16SJISTILDE に統一してみてください。
(oo4oの場合)
クライアント側とサーバ側の両方の環境変数というのは、oracleの環境変数のことだと思います。
どの変数をどのように変えればよいのでしょうか?
OSによっても変わりますが、WinXPであれば、
マイコンピュータのプロパティから、[詳細設定]-[環境変数]および、
レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE以下にて設定します。
なお、質問内容が、VBとは直接関係ない方向に向かってきましたので、
具体的な設定方法がわからない場合は、Oracleのサポート等を利用してください。
魔界の仮面弁士さま
いろいろありがとうございました。
DB構築時に設定を行い、さらに環境変数を設定することできちんと表示できるようになりました。
VB以外についてもいろいろと教えていただきありがとうございました。
ツイート | ![]() |