Encoding.UTF8.GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(s))
Теперь у вас есть нормальная строка Unicode, содержащая кириллицу.
Обратите внимание, что возможно, что ваша неправильно кодированная строка "Latin-1" на самом деле может быть неправильно кодированной строкой "Windows codepage 1252"; Я не могу сказать из данного примера, поскольку он не использует символы, которые отличаются между двумя кодировками. Если это так, используйте GetEncoding(1252)
.
Кроме того, это предполагает, что это содержимое базы данных по вине. Если в базе данных предполагается для хранения строк UTF-8, но вы извлекаете их, как если бы они были Latin-1 (или кодовой страницей 1252 из-за того, что она является системной кодовой страницей), тогда вам действительно нужно перенастроить ваш слой доступа к данным, чтобы установить правильную кодировку. Если вы используете SQL Server, лучше начать использовать NVARCHAR.