現在、.NETの標準テキストコントロールを使用して、入力したUNICODE体系の文字をOracleに落とすと、文字化けが発生しており困っています。
恐縮ですが、以下にソースを記載させていたきますので、ご助言いただきたく、宜しくお願いします。
Public p_odbConn As New OleDb.OleDbConnection()
Dim odbcmdSel As New OleDb.OleDbCommand()
Dim odbredSel As OleDb.OleDbDataReader
Dim strSQL As String
odbcmdSel.Connection = p_odbConn
odbcmdSel.CommandText = strSQL
odbredSel = odbcmdSel.ExecuteReader
If odbredSel.Read Then
strSQL = "UPDATE TEST2 " & _
"SET S_1='" & Me.txtENAME.Text.Trim & "'," & _
"S_2='" & Me.txtJOB.Text.Trim & "'"
End If
odbredSel.Close()
odbcmdSel.CommandText = strSQL
odbcmdSel.ExecuteNonQuery()
UNICODEから「何」にして文字化けするのかは判りませんが、
その「何」にコードにエンコードすれば良いのではないでしょうか?
下記例では、「Shift_JIS」にエンコードしてます。
Dim objEncoding As Encoding 'エンコーディング
'エンコード種別を取得・設定
objEncoding = objEncoding.GetEncoding("Shift_JIS")
'以降、該当のメソッドを呼び出して変換する
'※ちなみにSomething()っていうメソッドは無いです。あくまで例です。
objEncoding.Something()
※Encodingクラスは Imports System.Text が必要です。
「データベース側の文字コード」と、「クライアントの環境変数で指定された文字コード」が一致しておらず、Shift_JIS変換が行われているのだと思います。Oracleのマニュアルを見て、NLS_LANGの設定等を確認してみてください。
編集 削除ご回答有り難うございます。
ご連絡が遅くなってすみません。
体調不良で倒れてました。
さて、確認したところ、おっしゃるように
クライアントがJA16SJISで
データベースはAL16UTF16でした。
もう一度DB再作成してチャレンジしてみます。
有り難うございました。