- - PR -
DBからのデータ取得時にエンコードエラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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型です。 何かヒントをいただけないでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2008-05-29 18:31
訳すと「UTF-8としておかしなバイト列 0xe2678b があった」って感じですかねぇ。 考えられる原因としては、 ・DBからデータを取得するときのエンコード指定が正しくない ・DBにおかしなデータが入っている とかでしょうか。 「invalid byte sequence for encoding」で検索してみると同じ現象にはまった人の記録がちらほら出てくるので、その中から心当たりがありそうなものを探してみてください。 | ||||
|
投稿日時: 2008-05-29 22:17
rainさん、ご回答ありがとうございます。
そういうことでしたか。 調べてみると、DBの作成時の設定も関係しているかもしれないみたいです。 引き続き調べてみます。 ありがとうございました。 |
1