質問編集履歴

1 説明が不足していた為

GiveAHand

GiveAHand score 278

2016/06/05 21:41  投稿

C# シフトJISのCSVデータをUTF-8に変換する方法。
いつも大変お世話になっております。
C#でCSVからデータを読み込んで、SQLiteに書き込むというプログラムを作成しています。
CSVはSJISでSQliteはUTF-8なので、読み込んだデータをUTF-8に変換しなければいけないのですが、それがうまくいきません。
データは、
データは、まず、webcliantでFTP接続をして、このようにダウンロードをしています。
```C#
// バイナリを文字列に変換(UTF8 -> 文字列)
string str = System.Text.Encoding.UTF8.GetString(sourceData, 0, sourceData.Length);
// StreamWriter の作成
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@item.filepath, false, System.Text.Encoding.GetEncoding("shift_jis")))
{
   // ファイルへの書き込み(このとき文字列 -> Shift-JIS)
   sw.Write(str);
}
```
そのようなデータを、以下のように、StreamReaderを使って読み込んでいます。
```C#
// csvファイルを開く
using (var sr = new System.IO.StreamReader(@csvfile.filepath))
{
   // ストリームの末尾まで繰り返す
   while (!sr.EndOfStream)
   {
       // ファイルから一行読み込む
       var line = sr.ReadLine();
   }
}
```
 
このように読み込んでいます。  
このように読み込んだデータを、
http://dobon.net/vb/dotnet/string/getencoding.html
このページにあるように、
```C#
bytesData = System.Text.Encoding.UTF8.GetBytes(value);
cmd.Parameters["data"].Value = System.Text.Encoding.UTF8.GetString(bytesData);
```
このようにして、UTF-8に変換しようとしているのですが、これではうまくいきません。
というか、そもそも文字コード変換は、
デコードやエンコードと共にしか出来ないのでしょうか?
もしくは、ReadLineメソッド実行時にエンコードさせる方法は無いでしょうか?
  • C#

    12248 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る