這是我的函數來轉換文件的編碼。 在轉換之前,我在Notepad ++中打開了該文件,並使用編碼菜單檢查了編碼,它顯示編碼採用UTF 8編碼。我嘗試使用以下函數轉換文件,但它未轉換爲ASCII。
請看看功能。如何將'沒有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
}
}
請幫助我理解什麼是錯的一切發生的時候,當我轉換文件沒有BOM到Windows 1252?
這是你想要的,ASCII還是Windows-1252?雖然文件的編碼是由編寫者確定的,但對於多種編碼,輸出可能是相同的。 (不要被你的測試數據所困擾。)讀者只需使用編寫器使用的編碼。 –
當您的Unicode輸入數據包含不在您的目標字符集中的字符時,您希望發生什麼?選擇:替換爲'?',拋出異常,或相信它永遠不會發生。 –