Я сильно подозреваю, что ваша исходная строка не имеет правильных значений. Я предполагаю, что вы прочитали его из файла, как если бы это был UTF-8.
Чтобы выполнить преобразование между двумя кодировками, вы не должны иметь строку в первую очередь - вы должны в основном загрузить байт файла и вызвать Encoding.Convert()
таким образом. Либо загрузите файл, используя ISO-Latin-1, и просто сохраните его как UTF-8. Например:
public static void ConvertLatin1ToUtf8(string inputFile, string outputFile)
{
Encoding latin1 = Encoding.GetEncoding(28591);
string text = File.ReadAllText(inputFile, latin1);
File.WriteAllText(outputFile, text, Encoding.UTF8);
}
или
public static void ConvertLatin1ToUtf8(string inputFile, string outputFile)
{
Encoding latin1 = Encoding.GetEncoding(28591);
byte[] latinBytes = File.ReadAllBytes(inputFile);
byte[] utf8Bytes = Encoding.Convert(latin1, Encoding.UTF8, latinBytes);
File.WriteAllBytes(outputFile, utf8Bytes);
}