- PR -

DBからのデータ取得時にエンコードエラー

1
投稿者投稿内容
会議室デビュー日: 2008/05/29
投稿数: 12
投稿日時: 2008-05-29 12:37
初めて投稿させていただきます。

現在、PostgreSQLのDBに対してC#を用いてデータ取得をしようとしていますが、
SELECTがうまくいかずに困っています。
ソースは以下のようになっています。

public DataTable GetOldRingiSysData(
string pNo,
string pConnection)
{

DataTable dt = new DataTable();

OdbcConnection con = new OdbcConnection(pConnection);
OdbcCommand cmd = new OdbcCommand();

string sql
= "SELECT *"
+ " FROM "
+ " \\"Trgdb\\".trg_view"
+ " WHERE"
+ " number = :番号";

cmd.Parameters.Add("番号", OdbcType.Char, 10);
cmd.Parameters["番号"].Value = pNo;

cmd.CommandText = sql;
cmd.Connection = con;
cmd.Connection.Open();

OdbcDataAdapter od = new OdbcDataAdapter();
od.SelectCommand = cmd;

od.Fill(dt);

return dt;
}

すると、データは存在するのですが取得できず
「invalid byte sequence for encoding \\"UTF8\\": 0xe2678b」
このようなエラーが発生してしまいます。

ちなみにDBのnumberカラムはChar型です。

何かヒントをいただけないでしょうか。
よろしくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-29 18:31
引用:

烈さんの書き込み (2008-05-29 12:37) より:

「invalid byte sequence for encoding \\"UTF8\\": 0xe2678b」



訳すと「UTF-8としておかしなバイト列 0xe2678b があった」って感じですかねぇ。
考えられる原因としては、
・DBからデータを取得するときのエンコード指定が正しくない
・DBにおかしなデータが入っている
とかでしょうか。

「invalid byte sequence for encoding」で検索してみると同じ現象にはまった人の記録がちらほら出てくるので、その中から心当たりがありそうなものを探してみてください。
会議室デビュー日: 2008/05/29
投稿数: 12
投稿日時: 2008-05-29 22:17
rainさん、ご回答ありがとうございます。

そういうことでしたか。
調べてみると、DBの作成時の設定も関係しているかもしれないみたいです。

引き続き調べてみます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)