- - PR -
UTF-16でのテキスト出力
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-05 14:12
お世話になります。
StreamWriterでデータセットのUTF-16のテキストを出力したいです。 .net2003、oracle10gでWinアプリです シフトJISではうまくいくのですが、 System.Text.Encoding.GetEncoding("UTF-16")を指定した時に 「プログラム名.odsAR+TABLERow」という文字が行の数分出てしまいます。 以下、ソース抜粋になります。 Dim writer As StreamWriter, reader As StreamReader writer = New StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\" & strFileName1, False,System.Text.Encoding.GetEncoding("UTF-16")) Dim RowCnt As Integer = odsAR.Tables("TABLE").Rows.Count Dim Row As Integer For Row = 0 To RowCnt - 1 writer.WriteLine(odsAR.Tables("TABLE").Rows(Row)) Next writer.Close() 初歩的な事かもしれませんが、 宜しくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-12-05 14:49
StreamWriter.WriteLine(DataRow)はないので、StreamWriter.WriteLine(Object)が適用されます。 StreamWriter.WriteLine(Object)(microsoft.com)より引用
なので、UTF-16だろうが、S-JISだろうが、UTF-8だろうが出力される内容に違いは出ないはずです。 違いが出るということは、違いが出るような記述をしているからではありませんか? (エンコーディングの指定以外に) DataTableをどう構築したのか、またDataRowの実際の型が何かわかりませんが、以下のようなコード(VB.NETは分からないのでc#でご勘弁を)を実行してみましたが、同一の結果でした(エンコーディングは違うけれども)
[結果] 共にSystem.Data.Datarowが指定行数分出力 | ||||||||||||
|
投稿日時: 2007-12-05 20:00
かずくんさん、
ありがとうございます。 コードの提供ありがとうございます。 補足ですが、 Oracleデータアダプターを使用しています。 System.Data.OracleClient.OracleDataAdapter odsAR.Clear() odaAR.Fill(odsAR) おっしゃられるとおり、 エンコードの指定だけで違いが出ないと思い 調査したところ両方ともうまくいっていませんでした。 色々試行錯誤した結果、 ActiveReportのTextExportを使用して Encode指定したところうまくいきました。 ありがとうございました。 |
1