Я хотел бы преобразовать строковую переменную из UTF8 в ISO-8859-1, потому что для специальных символов, таких как ä, ö, ü, я вижу ?
в C #. Для достижения этой цели я нашел этот пост . Но это не работает для меня. Я пытался выяснить, почему ....
Я наблюдал байты исходной и преобразованной строки в C # с этим кодом:
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(stream, dt2.Rows[0][0]); // I read my string from a datatable and it is utf8 encoded
byte[] bytes = stream.GetBuffer();
Эта строка кода:
Console.WriteLine(BitConverter.ToString(bytes).Replace("-", ""));
возвращается:
4652495343484BEFBFBD53455A55424552454954554E47454E2020
Теперь я хотел бы кодировать в ISO-8859-1. Для этого я использую этот код:
var srcEncoding = Encoding.Default; // The original bytes are utf8 hence here "Default"
var destEncoding = Encoding.GetEncoding("ISO-8859-1");
var destBytes = Encoding.Convert(srcEncoding, destEncoding, bytes);
и затем запустите строку кода:
Console.WriteLine(BitConverter.ToString(destBytes).Replace("-", ""));
Я получаю тот же шестнадцатеричный код. Кажется, что преобразование не работает должным образом
4652495343484BEFBFBD53455A55424552454954554E47454E2020
У вас есть идеи, почему конвертация не работает для меня?