- - PR -
System.IO.StreamWriterで日本語が文字化け
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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に書き出しています。 項目が文字列かどうか判断して、ダブルコーテーションで くくっています。 原因はどこにあるのでしょうか? また対策はありますか? 宜しくお願いします。 | ||||
|
投稿日時: 2007-07-30 19:52
メモ帳で、ファイルの開くから、Unicode で開いてみてください。
| ||||
|
投稿日時: 2007-07-30 19:58
ありがとうございます。
GetEncoding(932)の指定が抜けていたせいでしょうか? | ||||
|
投稿日時: 2007-07-30 20:25
そう思うなら試して確認すればいいだろ。 この業界にいるなら文字エンコードくらい意識した方がいいよ。 | ||||
|
投稿日時: 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 のようにダブルコーテーションで くくったり、カンマをいれたりしていますが このような方法はおかしくないのでしょうか? | ||||
|
投稿日時: 2007-07-30 23:40
おかしくないのでしょうか、ってどういう不都合があるのか書いてくれないとわからないです。
特に不都合がないのでしたら、どこが、どういう理由でおかしいと思うのか、書いてくれないと。 思いつくのはROW(i)に,とか"が入ってても大丈夫かなあと思うくらいです。 | ||||
|
投稿日時: 2007-07-31 07:06
問題には、原因があります。その原因を理解せずに対処法だけ知ると、あとでえらい思いをします。
今、あなたは、過去の何らかの問題に対処する方法として、ダブルクォーテーションで囲むという方法だけ知っているわけです。それによって、どういう問題が解決するのか、理解していなかったわけです。 ちょうどよい機会なので、ふたつとも理解してください。 | ||||
|
投稿日時: 2007-07-31 10:21
みなさん、ありがとうございます。
恥ずかしながら、まさにJittaさんの言われる通です。 確認してみます。 懲りずに、また宜しくお願いします。 |