これは私のファイルのエンコーディングを変換する機能です。 変換する前にNotepad ++でファイルを開き、エンコードメニューを使用してエンコードをチェックしたところ、エンコードがUTF 8であることがわかりました。次の関数を使用してファイルを変換しようとしましたが、
機能をご検討ください。「BOMなし」のファイルのエンコードを「Windows-1252」エンコードファイルに変更するにはどうすればよいですか?
public static void ConvertFileEncoding(string srcFile, Encoding srcEncoding, string tempFile)
{
try
{
using (var reader = new StreamReader(srcFile))
using (var writer = new StreamWriter(tempFile, false, Encoding.ASCII))
{
char[] buf = new char[1024];
while (true)
{
int count = reader.Read(buf, 0, buf.Length);
if (count == 0)
{
break;
}
writer.Write(buf, 0, count);
}
}
System.IO.File.Copy(tempFile, srcFile, true); // Source file is replaced with Temp file
DeleteTempFile(tempFile);
// TO DO -- Log Sucess Details
}
catch (Exception e)
{
throw new IOException("Encoding conversion failed.", e);
// TO DO -- Log failure Details
}
}
Iは、Windows-1252にBOMせずにファイルを変換する際にどのような間違ったhappenesを理解する上で私を助けてください?
ASCIIまたはWindows-1252のどちらが必要ですか?ファイルのエンコーディングはライターによって決定されますが、出力は多数のエンコーディングで同一である場合があります。 (あなたのテストデータがこれに従うことで混乱しないでください。)読者は、ライターが使用したエンコーディングを使用するだけです。 –
Unicode入力データにターゲット文字セットに含まれていない文字が含まれているときに、何をしたいですか?選択肢: '?'で置き換えたり、例外をスローしたり、決して起こらないと信じています。 –