ASP.Net 全角文字コード
大変お世話になっております。
現在、ObjectDataSource のデータをCSVファイルにしたいと思い、まずは固定データをテストとしまして下記のプログラムを書きました。(ほとんど受け売りです^^;)
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim csvStr As String
csvStr = "1,AAA,これはテスト" + vbCrLf _
+ "2,BBB,これもテスト"
Response.ContentType = "application/octet-stream"
'Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("CSVファイル.csv"))
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("CSVファイル.csv"))
Response.Write(csvStr)
Response.End()
End Sub
HttpUtility.UrlEncode と Server.UrlEncode 両方でファイルを出力しました。
メモ帳で開くと何も問題なく開けるのですが、Excelで直接開くと、3項目目の全角文字がバケてしまいます。Excelの外部データの取り込みで、Csvファイルを選択していく方法だと問題ないのですが、これだと面倒なので、
CSVファイルをダブルクリック → Excelで開く → ふつうにデータを表示させたい
上記を行うためには、どのような文字コードで出力させればよいでしょうか?
上記プログラムでご指摘の箇所やご教授をいただけますと大変うれしい限りでございます。
何卒よろしくお願い申し上げます。
お礼
わざわざありがとうございました。 おっしゃるとおりやってみましたが、それでも ダウンロードボックスが出てきます。 ダウンロードボックスを出さないでブラウザに表示させることがどうしてもできません。 ちなみに以下のやり方でやっています。 C#です。 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); // EXCELの出力用のメモリストリームを作成します。 System.IO.MemoryStream memStream = new System.IO.MemoryStream(); // メモリストリームにEXCELエクスポートを行います。 this.xls.Export(rpt.Document, memStream); // 出力ストリームにEXCELのストリームを出力します。 Response.BinaryWrite(memStream.ToArray()); // バッファリングされているすべての内容をクライアントへ送信します。 Response.End(); ↑このやり方でやっても、ヘッダの部分 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); の部分を Response.ContentType= "application/vnd.ms-excel"; だけにしても、結果は同じです。 どうしてもブラウザにそのまま表示させることができないのです。 他にやり方はありませんか? 私の方でも色々調べてみたのですが、分かりませんでした。すみません。