2010-12-17 3 views
12

私はCSVファイルをUTF-8でエンコードしたいと思っています。今、私のCSVファイルは日本語フォントを表示できません。この問題を解決するためにC#コードが必要です。C#.NetでCSVファイルのエンコーディングUTF-8を取得するにはどうすればよいですか?

+0

は、あなたが持っているコードを投稿してみてください。わからないコードをデバッグするのは難しいです。 –

答えて

27

SuSanda、
あなたの現在のコードや保存しようとしている実際のテキストについてはわかりませんが、これが正しい方向に向かうかもしれません。

using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8)) 
{ 
    sw.WriteLine("頼もう"); 
} 

Excelでそのファイルを開くと、期待どおりに日本語のテキストが表示されます。
Encoding.UTF8パラメータを指定しないと、ぎこちない表示になります。

私はそれがあなたが探していることを望みます。

+3

BOMシンボルを避けたい場合は、 'Encoding.UTF8'の代わりに' new UTF8Encoding(false) 'を使用してください。 –

1
StringBuilder sb = new StringBuilder();   


var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray(); 
sb.AppendLine(string.Join(",", columnNames)); 

foreach (DataRow row in dt.Rows) 
{ 
    var fields = row.ItemArray.Select(field => field.ToString()).ToArray(); 
    sb.AppendLine(string.Join(",", fields)); 
} 

File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); 
3

このコードは、csvファイルのテキストをエンコードされたcsvファイルとして保存するのに役立ちます。 下記のように電話をかけて保存してください。

GetCSVFileContent( "Your_CSV_FileName")

protected byte[] GetCSVFileContent(string fileName) 
     { 
      StringBuilder sb = new StringBuilder(); 
      using (StreamReader sr = new StreamReader(fileName, Encoding.Default, true)) 
      { 
       String line; 
       // Read and display lines from the file until the end of 
       // the file is reached. 
       while ((line = sr.ReadLine()) != null) 
       { 
        sb.AppendLine(line); 
       } 
      } 
      string allines = sb.ToString(); 


      UTF8Encoding utf8 = new UTF8Encoding(); 


      var preamble = utf8.GetPreamble(); 

      var data = utf8.GetBytes(allines); 


      return data; 
     } 
+0

警告:プリアンブルは使用されません。私の場合はプリアンブルを使用することが重要でした。プリアンブル+データからデータを連結する必要があります。data = preamble .Concat(data).ToArray(); – razon

関連する問題