1

次のコードを使用して、中国語と日本語の文字もサポートする .cvs ファイルにコンテンツをエクスポートしています。

public ActionResult Download(strng accnumber)
{
     string csvContent = "东西,东西,东西, hi";
     var data = Encoding.UTF32.GetBytes(csvContent );
     string filename = "CSV_" + accnumber + ".csv";
     return File(data, "text/csv", filename);
}

ファイルをエクスポートすると、適切な中国語または日本語の文字が取得されません。何が欠けている?

私はそれをサポートするためにUTF32エンコーディングを使用しました。

編集

メモ帳で .csv ファイルを開くと完全な文字が表示されるのに、ms-excel では表示されないことに気付きました。

4

3 に答える 3

1

そのファイルを提供するasp.netを使用しているため、httpパイプラインのエンコーディングも処理する必要があります。私は以前にそれを見つけませんでした、ごめんなさい。

単純な ActionResult の代わりに、派生した ActionResult の 1 つを使用する必要があります。私はFileContentResultを使用しました。ブラウザーに UTF-32 ファイルが来ることを伝えるために作成している特別な ContentType に注意してください...

public ActionResult Download(string accnumber)
{
        string csvContent = "东西,东西,东西, hi";
        var data = Encoding.UTF8.GetBytes(csvContent);
        // add byte order mark
        var bom = new byte[] { 0xEF, 0xBB, 0xBF };
        // hold it all
        var all = new byte[bom.Length + data.Length];
        // copy over BOM
        Array.Copy(bom, all, bom.Length);
        // copy over data
        Array.Copy(data, 0, all, bom.Length, data.Length);

        string filename = "CSV_" + accnumber + ".csv";
        var file = new FileContentResult( all, "text/csv" )
        {
            FileDownloadName = filename
        };

        return file;    
}
于 2013-01-01T10:35:11.553 に答える
0

私もこの問題に遭遇しました。「return file ;」の直前に次の行を追加して修正します。そしてそれは私のために働きます。

Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
return file;
于 2014-02-21T13:03:04.557 に答える