Я погуглил по этой теме и просмотрел все ответы, но до сих пор не понимаю.
В основном мне нужно преобразовать строку UTF-8 в ISO-8859-1, и я делаю это, используя следующий код:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Моя исходная строка
Message = "ÄäÖöÕõÜü"
Но, к сожалению, моя строка результата становится
msg = "�ä�ö�õ�ü
Что я здесь делаю не так?
Encoding.Unicode
и в Win32 API. Unicode - это набор символов, а не кодировка. UTF-16 - одна из нескольких кодировок для Unicode.) - person Tom Blodget   schedule 19.11.2016Message
был декодирован из UTF-8. Предполагая, что эта часть работает правильно, преобразование в Latin-1 так же просто, какbyte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Затем, как говорит StuS, вы можете преобразовать байты Latin-1 обратно в UTF-16 с помощьюEncoding.GetEncoding("ISO-8859-1").GetString(bytes)
- person Qwertie   schedule 30.10.2019