- PR -

System.IO.StreamWriterで日本語が文字化け

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-07-30 19:46
 こんばんは。

1つ教えて下さい。

System.IO.StreamWriterを使ってデータを
csvに書き出すプログラムを作っています。

csvに書き出した後、メモ帳で確認するとokなのですが
excelで開くと日本語やカナが文字化けしてしまいます。

csvに書き出すプログラムは
データをDataViewで取得した後

   Dim sw1 As New System.IO.StreamWriter("D:\AA.CSV", False)
Dim line As String = ""
Dim i As Int32

For Each ROW As DataRowView In vw
line = ""
For i = 0 To vw.Table.Columns.Count - 1
If ROW(i).GetType.ToString() = "System.String" Then
line = line & ("""" & ROW(i) & """" & ",")
Else
line = line & (ROW(i) & ",")
End If
Next
sw1.WriteLine(line)
Next
sw1.Close()

とloopしてcsvに書き出しています。
項目が文字列かどうか判断して、ダブルコーテーションで
くくっています。

原因はどこにあるのでしょうか?
また対策はありますか?

宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-07-30 19:52
メモ帳で、ファイルの開くから、Unicode で開いてみてください。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-07-30 19:58
ありがとうございます。

GetEncoding(932)の指定が抜けていたせいでしょうか?
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-07-30 20:25
引用:

LANVINさんの書き込み (2007-07-30 19:58) より:
ありがとうございます。

GetEncoding(932)の指定が抜けていたせいでしょうか?



そう思うなら試して確認すればいいだろ。
この業界にいるなら文字エンコードくらい意識した方がいいよ。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-07-30 22:41
すいません。

最後にSQLServerやODBCでホストからデータを取得し
CSVに書き出したいのですが
If ROW(i).GetType.ToString() = "System.String" Then
line = line & ("""" & ROW(i) & """" & ",")
Else
line = line & (ROW(i) & ",")
End If
のようにダブルコーテーションで
くくったり、カンマをいれたりしていますが
このような方法はおかしくないのでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-07-30 23:40
おかしくないのでしょうか、ってどういう不都合があるのか書いてくれないとわからないです。
特に不都合がないのでしたら、どこが、どういう理由でおかしいと思うのか、書いてくれないと。
思いつくのはROW(i)に,とか"が入ってても大丈夫かなあと思うくらいです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-07-31 07:06
問題には、原因があります。その原因を理解せずに対処法だけ知ると、あとでえらい思いをします。

今、あなたは、過去の何らかの問題に対処する方法として、ダブルクォーテーションで囲むという方法だけ知っているわけです。それによって、どういう問題が解決するのか、理解していなかったわけです。
ちょうどよい機会なので、ふたつとも理解してください。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-07-31 10:21
みなさん、ありがとうございます。

恥ずかしながら、まさにJittaさんの言われる通です。

確認してみます。

懲りずに、また宜しくお願いします。

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