電子書籍の厳選無料作品が豊富!

 初めて投稿させて頂くkuro_sanと申します。どうぞよろしくお願いします。

 現在visual basic 2008を用いてプログラムを作成しているのですが、データの読み込み、書き込みを行う箇所で問題が発生したために、行き詰まっております。
 コードを以下に示させて頂きます。
[書き込み処理関数]
Private Sub WriteLog(ByVal FileName As String)
'File Open
Dim Writer As New IO.StreamWriter(FileName, True)

'書き込み処理
For i As Integer = 0 To i
Writer.WriteLine(Table(0, i) & "," & Table(1, i) & "," & Table(2, i))
Next

Writer.Close()
End Sub

[読み込み処理関数]
Private Sub Readlog(ByVal FileName As String)
Dim Reader As New IO.StreamReader(FileName, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Items() As String = New String() {}
Dim Line As String = Reader.ReadLine 'CSVの一行

'データの読み込み
i = 0

Do Until IsNothing(Line)
Items = Line.Split(",")

i += 1
Table(0, i) = Items(0).ToString
Table(1, i) = Items(1).ToString
Table(2, i) = Val(Items(2))

Line = Reader.ReadLine
Loop
End Sub

です。
 書き込みはtext形式の物に行っています。Table配列には(0,i),(1,i)にはString型の文字が、(2,i)には数字が入力されています。
入力、出力は行うことが出来るのですが、(0,i),(1,i)にひらがな、カタカナ、漢字などの文字が使われていると、読み込みを行った際に文字化けして格納されてしまいます。
(例:くろ,kuro,1 → 縺上m,kuro,1)
 出力されたtextの中では文字化けが起こっていませんが、形式を直接csvに変換したり、読み込みを行った際に文字化けが発生している事から、書き込み時に問題があるのではないか、と思い調べているのですが、原因を判明できていません。

文字化けを発生させずに読み込み、書き込み処理を行う方法をご存知である方がいらっしゃればご教授頂けますと幸いです。

A 回答 (1件)

StreamWriterのそのタイプのコンストラクタはUTF-8で書き込みます


それに対してStreamReaderでのエンコーディングがShiftJISを指示しているので文字化けが発生します

StreamReaderのコンストラクタを
Dim Reader As New IO.StreamReader(FileName, System.Text.Encoding.UTF8)
といった具合にして見ましょう

またShiftJISで統一するならStreamWriterを
Dim Writer As New IO.StreamWriter(FileName, True, System.Text.Encoding.GetEncoding("Shift-JIS"))
といった具合に エンコーディングの形式を引数で与えましょう
    • good
    • 0
この回答へのお礼

コンストラクタを変更した所、見事に問題を解決することが出来ました。

迅速にご指摘して頂き、誠に有り難う御座いました。

お礼日時:2009/03/24 02:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!