2009-03-25 31 views
4

私は愚かな問題を抱えています。私はディスクからいくつかの.csファイルを読んでいます。 私が作った.netプログラムを使って、たくさんの正規表現やその他の操作を行っています。 その後、ディスクに書き戻します。ファイルにC#ソースコードを書き込む

結果のファイルが何とか間違ったエンコードを取得します。 C#ソースファイルはどのようなエンコーディングですか?そして、最初のバイトオーダーがあります、それは必要ですか? File.WriteAllText()を使用すると書き込まれますか?

は、ファイルを変更するプログラムは、単純な.NETアプリケーションであり、コードは単に

 string text = System.IO.File.ReadAllText(fn); 
     string newText = Regex.Replace(text, regexStr, replaceStr); 
     System.IO.File.WriteAllText(fn, newText); 

であるC#のファイルには、コメントや文字列は、標準のコードページの一部であるように思えません持っています。

「A」

ある

ソリューション問題の文字の一つ:

これは正しく

 string text = System.IO.File.ReadAllText(fn, Encoding.GetEncoding(1252)); 
     string newText = Regex.Replace(text, regexStr, replaceStr); 
     System.IO.File.WriteAllText(fn, newText, Encoding.GetEncoding(1252)); 
+0

どのようにファイルを開きますか? – Bravax

答えて

0

私は私の時間にいくつかのコードの氏族が書かれており、常にまし動作するようですASCIIエンコーディング(プレーンウィンドウテキスト)を使用しました。どのような言語CSファイルの正規表現の操作を行うために使用していますか?

1

デフォルトでは、ファイルはマシンの地域設定で設定されているコードページと同じコードページでエンコードする必要があります。デフォルトでは、これは「Unicode(UTF-8 with signature) - Codepage 65001」になります。たとえば、「西ヨーロッパ(Windows) - Codepage 1252」を使用するなど、任意のコードページを使用できます。

2

System.IO.File.ReadAllText(fn)入力ファイルのエンコーディングを推測しようとします。これはひどく間違っている可能性があります。

Visual Studio 2008は、デフォルトでUTF-8でファイルを作成します。同様に、可能な限りUTF-8を使用して、ディスクにファイルを書き込む際にEncoding.UTF8Encodingを指定してください。

関連する問題