-PR-

解決済みの質問

質問No.6239004
暇なときにでも
暇なときにでも
お気に入り投稿に追加する (0人が追加しました)
回答数1
閲覧数785
C# StreamReader,StreamWriter による文字化
C# StreamReader,StreamWriter による文字化け

お世話になります。
文字化けで悩んでいます。

Visual Studio 2008 C# にて、テキストファイルからデータを読んで別のテキストファイルに
そのまま書き出す(もちろん実際の運用では加工するわけですが)処理で文字化けが起こります。

そのテキストファイル自身を C# で作れば問題はないのですが、メモ帳を使って書き込んだファイルでは
文字化けが起こります。
対処方法があれば教えてください。

以下はその実験に使ったコードです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
// これは正常に書き込みできました
StreamWriter sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.txt");
sw.WriteLine("これはてすとです。");
sw.WriteLine("This is test.");
sw.Close();

// これも正常に読み込め、書き込みもできました
StreamReader sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.txt");
sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\newtest.txt");
while (!sr.EndOfStream)
{
sw.WriteLine(sr.ReadLine());
}
sr.Close();
sw.Close();

// 次はあらかじめメモ帳で作ったファイルを読んで、別のファイルに書き出します
// これが文字化けします
sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test2.txt");
sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\newtest2.txt");
while (!sr.EndOfStream)
{
string dat = sr.ReadLine();
sw.WriteLine(dat);
Console.WriteLine(dat);
}
sr.Close();
sw.Close();
}
}
}
投稿日時 - 2010-10-09 22:34:02

質問者が選んだベストアンサー

回答No.1
文字コードが合っていないのでは?

sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test2.txt",System.Text.Encoding.GetEncoding("shift_jis"));

としてみてください。

。。。

VBですけど、原因は同じことなのでご参考まで。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard30.htm

で、C#のこれを読む。
http://dobon.net/vb/dotnet/file/readfile.html

ライト側から合わせる場合は、
http://dobon.net/vb/dotnet/file/writefile.html
投稿日時 - 2010-10-10 17:20:48
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。

実はこの質問を載せてからなかなか現れずに「サポート情報を~~」などと
表示されていて、困っておりました。

その間に StreamReader の第2引数に「Encoding.Default」を追加した結果、
思うように動くようになっていました。

あと、同じような内容の過去ログも見て、Microsoft のページも参考にしていました。
おかげさまで解決しました。
ありがとうございました。ご紹介のページは参考にさせていただきます。
投稿日時 - 2010-10-10 20:53:22
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています
別のキーワードで再検索する
もっと聞いてみる

関連するQ&A

回答募集中

この他の関連するQ&Aをキーワードで探す

-PR-

OKWaveのおすすめ情報

特集

同じカテゴリの人気Q&Aランキング

カテゴリ
C・C++
-PR-

ピックアップ

ノウハウ共有サイト

-PR-
-PR-