- - PR -
Ole DB Provider FOR ORACLEでのデータ抽出で文字化け
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-02-22 03:10
初心者です。
oracleよりデータを1件抽出し、テキストボックスに貼り付けたのですが、 RH と表示されるはずが文字化けし、次のようになってしまいました。 ?† 文字コードを調べたらunicodeで 04X4852、0x2020 となっていました。 webフォームはテキストとボタンが各1個の簡単な画面です。 何が原因なのか見当が付かない状況です。 分かる方がいらしたら、ご教授いただきたくお願いします。 処理内容及び環境は以下の通りです。 ◆処理内容 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myConnection As New OleDb.OleDbConnection("Provider=ORAOLEDB.ORACLE.1;Data Source=oraserver;" & _ "Persist Security Info=False; User Id=usr1;Password=usr1;OLEDB.NET=True") Dim myCommand As New OleDb.OleDbCommand("SELECT id FROM Tbl WHERE Code='123'", myConnection) myConnection.Open() Dim myReader As OleDb.OleDbDataReader myReader = myCommand.ExecuteReader() While myReader.Read() TextBox1.Text = myReader.GetString(0) End While End Sub ◆環境 WIN2000 NET Framework1.0 VS.NET2002 oracle7.3.4 Ole Db Provider FOR ORACLE |
|
投稿日時: 2004-02-23 11:07
データベースの文字コードと、環境変数NLS_LANGをあわせてください。.NETの問題ではありません。Oracleの設定の問題です。
|
|
投稿日時: 2004-02-23 15:35
Jittaさん回答ありがとうございます。
>データベースの文字コードと、環境変数NLS_LANGをあわせてください 具体的にクライアント?のどのファイルのことでしょうか。 知識不足で申し訳ないのですが、教えていただけると助かります。 |
|
投稿日時: 2004-02-23 16:41
サーバ側で何を指定したかは、オラクルのグローバリゼーションあたりのマニュアルを調べてください。
クライアント側は、システム環境変数を設定します。OSによって設定の仕方は違います。 95,98,Me:Autoexec.bat NT,2000,XP:システムのプロパティから設定 設定の仕方、指定する文字列については、オラクルのマニュアルを調べてください。 |
|
投稿日時: 2004-02-24 22:19
ありがとうございました。
確認してみます。 |
|
投稿日時: 2005-09-27 18:14
こんにちわ。
文字が 「?†」などに文字化けしてしまう件について、 今更ですが、同じ問題(だと思う)にはまって一応解決を見たので 報告します。 若干システム構成は違います。 クライアントはWindowsXP+Oracle8iClient(8.1.7)+VB6.0(sp6)アプリです。 サーバーはWindows2003Server+Oracle9i(9.2)と WindowsNT4.0Server+Oracle7(7.3.4)です。 アプリは上記2つのサーバーからデータを持ってきて表示をしますが、 Oracle7側から持ってきたデータのみ文字化けします。 #ORALCEの文字化けの話題はネットを探してもたくさん出てきますが、 #〜(チルダ)が?になる文字化けの話題がほとんどを占めています。 #で、サーバー側の文字コードセットとクライアントの」文字コードセットを #JA16JISからJA16JISTILDEに変更するみたいな感じですが、上記のアプリで #「?†」になってしまうのは多分原因が違うだろうなと漠然と感じてました。 試したこと。 @VBアプリでOleProvider for ORALCE 8.1.7とADO2.5を使ってレコードセット を作成し、その値をテキストボックスに代入したりDebug.Printにすると文 字化ける。(障害の現象) ASQL Plusで普通にSELECT文を流しても、文字化けしない。 BMS-ACCESS2002をインストールし、ORALCE ODBC Driver 8.1.7で該当テーブルを リンクし表示させても文字化けしない。 ここまできてなんとなくですが、OleProviderかVBのキャラクタセットとORA7のキャラクタセットが合わないことが原因ではないかと思ってきました。Ora8i以降とかはきっとUnicode対応していて、Ora7はUnicode対応未対応。VBは内部処理はUnicodeだったと記憶してます。 前置きが長くなりましたが、以下のようにして解決しました。 Dim cnn As New ADODB.Connection cnn.open ほにゃらら接続文字 Dim rs As New ADODB.Recordset rs.open "SELECT フィールド1 from テーブル",cnn,ほにゃら で、 Text1.Text=rs.Fields(0) とすると文字化けしていたのが Text1.Text=Strconv(rs.Fields(0),vbUnicode) とするだけで正常に表示されるようになりました。 #今どきOracle7サーバーにWindowsXPクライアントっていう組み合わせがそもそもナンセンスですよねー。 #お気づきかもしれませんが、なぜORACLEClientが9じゃなくて8なの? #OracleClient9でOracle7のテーブルをセレクトしたりすると、「フェッチ順序が無効です」とかエラーが出てくるので8で接続することにしたんです。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-09-27 18:18 ] |
1