3

次のコードを使用して、Unicode 文字列から csv ファイルを作成しました。

context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.Utf8;        
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");
context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());                

String output ="";        
output += "Name, callNumber" + "\n";
String output ="علی,34343555" + "\n";     
context.Response.Write(output);

問題は、正しく表示されない Unicode 文字である "علی" です。

ガイドをありがとう。よろしくアリ

4

4 に答える 4

5

ストリームライターを使用して、UTF-8 エンコーディングを使用して Unicode 文字を書きたいと思います。スニペット:

 using (StreamWriter sw = new StreamWriter(new FileStream("c:/Temp.csv", FileMode.Create), Encoding.UTF8))
            {
                    sw.WriteLine(string.Join(",", s));
            }
于 2014-06-06T22:48:24.063 に答える
2

コードにいくつかの問題があります。

  • context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());UTF-8 ではなくUTF -32 の BOM を書き込みます。

  • 出力変数が 2 回定義されています。

これを試すことをお勧めします:

context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.Utf8;        
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");

String output ="";        
output += "Name, callNumber" + "\n";
output +="علی,34343555" + "\n";     
context.Response.Write(output);
context.Response.End()
于 2013-01-08T21:18:26.713 に答える