C#中国語を含むoracle BLOBを読み込む
次のコードは、oraclデータベースから中国語を含むBolbを正しく読み出す方法を示しています.
なお、24行目にEncodingを使用するのは、データベースに格納する際にも使用するUnicode符号化であるため、ここでは読み出しの際に同様の符号化を使用する必要がある.エラーが発生する可能性があります.
以下は、中国語文字データを符号化バイナリ配列に変換するコードです.
System.Text.Encoding.Unicode.GetBytes(「oracleデータベースの中国語読み書きをテスト!」);
public string getAttachment()
... {
String sql = " select BOLB_CONTENT from SOME_TABLE where ID = '222' " ;
OracleConnection conn = new OracleConnection(connString);
conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
System.Text.StringBuilder sb = new StringBuilder();
byte [] buffer = new byte [ 8192 ];
int i = 0 ;
int j;
do
... {
j = ( int )reader.GetBytes( 0 , i, buffer, 0 , buffer.Length);
sb.Append(System.Text.Encoding.Unicode.GetString(buffer, 0 , j));
i += j;
} while (j == buffer.Length);
return sb.ToString();
}
なお、24行目にEncodingを使用するのは、データベースに格納する際にも使用するUnicode符号化であるため、ここでは読み出しの際に同様の符号化を使用する必要がある.エラーが発生する可能性があります.
以下は、中国語文字データを符号化バイナリ配列に変換するコードです.
System.Text.Encoding.Unicode.GetBytes(「oracleデータベースの中国語読み書きをテスト!」);