谁能帮我吗?我尝试了很多不同的方法,但我没有得到想要的结果。我只想将现有文本 [.txt] 文件的编码从 ANSI 更改为 UTF8,其中包含 ö、ü 等字符。当我通过在编辑模式下打开该文本文件然后 FILE=>SAVE AS 手动执行此操作时,它在编码列表中显示 ANSI。使用它,我可以将其编码从 ANSI 更改为 UTF8,在这种情况下它不会更改任何内容/字符。但是在使用 CODE 时,它不起作用。
==>我曾经通过以下代码实现这一目标的第一种方式:
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();
但不幸的是,上述解决方案都不适合我。