データベースからデータを読み込んでテキストファイルに出力するC#プログラムがあります。データベースから読み込むときのUTF-8エンコーディング(C#)
OleDbCommand cmd = new OleDbCommand("SELECT * FROM " + tableName, conn);
OleDbDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
for (int i = 0; i < rdr.FieldCount; i++)
{
string toStr = rdr[i].ToString();
// ...etc.
特に1行で問題が起こり続けます。ここでは、データベース内の次のようになります。ここでは
Signed 8-bit 2’s-compliment
は、それが私の出力ファイルに次のようになります。
Signed 8-bit 2’s-compliment
私は考慮にエンコーディングを取ることによってこの問題を解決できることを考え出しました。その結果
string toStr = Encoding.UTF8.GetString(Encoding.Default.GetBytes(rdr[i].ToString()));
:だから私は、UTF-8にテキストを変換するために私のコードに変更私はこれを行う場合は、しかし、
Signed 8-bit 2�s-compliment
...
string toStr = Encoding.UTF8.GetString(Encoding.Default.GetBytes("Signed 8-bit 2’s-compliment"));
を..それは完璧に動作します。
Signed 8-bit 2’s-compliment
rdr[i].toString()
とすることができますか?私の推測では、オブジェクトを文字列に変換すると、’
文字のエンコーディングがねじれてしまい、アポストロフィに正しく変換できなくなってしまうのです。しかし、私はそこにtoString()
の使用を避けることはできないとは思わない。では私は何をしますか?