任何人都可以幫我嗎?我嘗試了很多不同的方式,但我沒有得到理想的結果。我只是想將現有文本[.txt]文件的編碼從ANSI更改爲UTF8,其中包含像ö,ü等字符。當我通過在編輯模式下打開該文本文件並手動執行FILE => SAVE AS時,它在編碼列表中顯示ANSI。使用這個,我可以將其編碼從ANSI更改爲UTF8,並且在這種情況下它不會更改任何內容/字符。但是當使用CODE時,它不起作用。將文本文件的編碼從ANSI更改爲UTF8,而不會影響C#中文件的任何字符!
==>第一種方法我用於實現由以下編碼:
if (!System.IO.Directory.Exists(System.Windows.Forms.Application.StartupPath + "\\Temp"))
{
System.IO.Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + "\\Temp");
}
string destPath = System.Windows.Forms.Application.StartupPath + "\\Temp\\temporarytextfile.txt";
File.WriteAllText(destPath, File.ReadAllText(path, Encoding.Default), Encoding.UTF8);
==>第二替代其中我使用:
using (Stream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (Stream destStream = new FileStream(destPath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
using (var reader = new BinaryReader(fileStream, Encoding.Default))
{
using (var writer = new BinaryWriter(destStream, Encoding.UTF8))
{
var srcBytes = new byte[fileStream.Length];
reader.Read(srcBytes, 0, srcBytes.Length);
writer.Write(srcBytes);
}
}
}
}
==>我使用第三備選:
System.IO.StreamWriter file = new System.IO.StreamWriter(destPath, true, Encoding.Default);
using (StreamReader sr = new StreamReader(path, Encoding.UTF8, true))
{
String line1;
while ((line1 = sr.ReadLine()) != null)
{
file.WriteLine(line1);
}
}
file.Close();
但不幸的是,上述解決方案都沒有爲我工作。
這不以任何方式適用於問如問。 – 2017-12-13 11:36:27