@IT会議室は、2009年4月15日に新システムに移行し、さらに2012年5月29日にITエンジニアに特化した
質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用くださいませ。
- PR -

vb.net CSV作成するときの文字化け

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/11/18
投稿数: 2
投稿日時: 2008-11-18 10:58
いつもお世話になります。質問させていただきます。
CSV作成するときは、日本語文字化けがあります。コードは下記通りです:
Dim path As String = "C:\sample.csv"
System.IO.File.Delete(path)
Dim csv As System.IO.StreamWriter = New System.IO.StreamWriter(path)
csv.BaseStream.Seek(0, System.IO.SeekOrigin.End)

For i = 0 To dt.Rows.Count - 1
Dim strData As String
strData = dt.Rows(i).Item("shutcho_data_id").ToString + ","
strData = strData + dt.Rows(i).Item("kaisha_code").ToString + ","
strData = strData + dt.Rows(i).Item("shozoku_bumon_code") + ","
strData = strData + dt.Rows(i).Item("shain_code") + ","
strData = strData + dt.Rows(i).Item("shinsei_bango") + ","
strData = strData + dt.Rows(i).Item("seisan_bango") + ","
If dt.Rows(i).Item("shuppatsu_nichiji") <> Nothing Then
strData = strData + CDate(dt.Rows(i).Item("shuppatsu_nichiji")).ToString + ","
Else
strData = strData + "" + ","
End If
If dt.Rows(i).Item("kichaku_nichiji") <> Nothing Then
strData = strData + CDate(dt.Rows(i).Item("kichaku_nichiji")).ToString + ","
Else
strData = strData + "" + ","
End If
strData = strData + dt.Rows(i).Item("yotei_chi") + ","
strData = strData + dt.Rows(i).Item("yomu")
csv.WriteLine(strData, System.Text.Encoding.GetEncoding("Shift-JIS"))
Next

csv.Flush()
csv.Close()
MsgBox("CSVファイルを作成しました。")

以上、よろしくお願いします。

[ メッセージ編集済み 編集者: 未記入 編集日時 2008-11-18 10:59 ]
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-18 11:39
StreamWriter のコンストラクタで、エンコードを指定してみて下さい。

_________________
Nakamura Blog
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-11-18 12:56
引用:

未記入さんの書き込み (2008-11-18 10:58) より:
csv.WriteLine(strData, System.Text.Encoding.GetEncoding("Shift-JIS"))



なかむらさんのご指摘以外にもこの行は見直してください。
WriteLineメソッドにEncodingクラスを指定するオーバーロードはありません。
この呼び出し方ではWriteLine(String, Object)なオーバーロードが呼び出されており、
これはEncodingを指定するためのものではないので、期待するようにはなりません。
未記入
会議室デビュー日: 2008/11/18
投稿数: 2
投稿日時: 2008-11-18 13:10
解決しました。ありがとうございます。
修正したコードは以下通り:

前:Dim csv As System.IO.StreamWriter = New System.IO.StreamWriter(path) -->
Dim csv As System.IO.StreamWriter = New System.IO.StreamWriter(path, True, System.Text.Encoding.GetEncoding("Shift-JIS"))

前:csv.WriteLine(strData,System.Text.Encoding.GetEncoding("Shift-JIS"))-->
csv.WriteLine(strData)


[ メッセージ編集済み 編集者: 未記入 編集日時 2008-11-18 13:40 ]
1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)