QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

ASP.NET(VB) : CSVファイル出力時の文字化けを直したい

お世話になります.ASP.NET初心者です.
Accessからの検索結果(リスト)を一度ブラウザに表示させた後に,
同じリストを「CSVファイル」に出力させたら文字化けを起こしました(UNICODE?).
S−JIS指定で出力させたいのですが・・・
どなたかにご教授頂きたく,宜しくお願い致します.

=====

Dim DT As DATE = Now()
Dim EDATE As String
EDATE = DT.ToString("yyyymmddhhmmss")
Dim CSVPATH As String = Server.MapPath("csvout/l_ki_st_selist_" & EDATE & ".csv")
Dim ACCLOG As String = DateTime.Now & " , " & Request.ServerVariables("REMOTE_ADDR") & " , " & Request.ServerVariables("HTTP_REFERER")
Dim csvWRITE As StreamWriter
csvWRITE = File.AppendText(CSVPATH)
'
'----- Header -----
csvWRITE.WriteLine(ACCLOG)
csvWRITE.WriteLine(" ")
csvWRITE.Write("ID")
csvWRITE.Write(" , ")



[ メッセージ編集済み 編集者: yuki 編集日時 2004-02-25 10:52 ]

質問者:yuki

回答

yukiさんの書き込み (2004-02-25 10:51) より:

S−JIS指定で出力させたいのですが・・・

--

Dim csvWRITE As StreamWriter

csvWRITE = File.AppendText(CSVPATH)

FileStreamを使ってファイルをオープンし、StreamWriterを明示的に作成します。
StreamWriterを作成する際にShift_JISのエンコーディングを指定してください。

投稿者:なちゃ

編集 履歴 (0)

なちゃさま
早速の返信ありがとうございます.

以下の様に書き換えてみましたが,
「'Shift_JIS' は 'System.Text.Encoding' のメンバではありません」
とコンパイルエラーが出てしまいます.
どこがおかしいのでしょうか?(初心者ゆえお許しください・・・)

=====

Dim FS As New FileStream(CSVPATH,FileMode.Create)
Dim csvWRITE As StreamWriter
csvWRITE = New StreamWriter(FS,Encoding.Shift_JIS)
csvWRITE = File.AppendText(CSVPATH)
'
'----- Header -----
csvWRITE.WriteLine(ACC)
csvWRITE.WriteLine(" ")
csvWRITE.Write("ID")
csvWRITE.Write(" , ")
 ・
 ・
 ・

投稿者:yuki

編集 履歴 (0)

yukiさんの書き込み (2004-02-25 15:35) より:

以下の様に書き換えてみましたが,

「'Shift_JIS' は 'System.Text.Encoding' のメンバではありません」

とコンパイルエラーが出てしまいます.

csvWRITE = New StreamWriter(FS,Encoding.Shift_JIS)

Encodingのヘルプを見てください。
Shift_JISというメンバはありません。
規定で用意されていないエンコーディングを取得するには、GetEncodingメソッドを使用します。
まあ、"Shift_JIS"と名前ででも指定して取得すればよいでしょう。
あるいは、Encoding.Defaultでもいいかもしれませんが、明示的に指定するほうが良いでしょう(これは場合にもよりますが)。

あ、あと、FileStreamでファイルをオープン云々て書きましたが、特にオプション指定がないのであれば、多分StreamWriterをファイル名をを指定して作成すればいけそうですね(Encodingの指定は必要です)。
# 「FileStreamで開くよりいい」といっているわけではありません、念のため。

投稿者:なちゃ

編集 履歴 (0)

Jittaさま なちゃさま

再度早速のご返信ありがとうございます.

少し自分で解決する努力が足りないようでした.(^o^;
先ずはヘルプ・関連事項等を見て情報を収集したいと思います.
さて,もう一頑張りします!!
(どうしてもダメだったらまた舞い戻って来ます・・・)

追伸 皆さんご丁寧な対応で感謝しております.m(_ _)m

投稿者:yuki

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。