Восстановление от использования неверной кодовой страницы в C # - PullRequest
1 голос
/ 22 октября 2010

Я прочитал строку "ñîôč˙" из файла, используя кодовую страницу windows-1251 вместо iso-8859-2.Это должна быть какая-то строка кириллицы.Как реализовать функцию, которая будет выполнять следующие действия в C #:

string res = Recover("ńîôč˙");

string Recover(string input)
{
    ???
}

Где res - кириллическая строка, которую я получил бы, если бы использовал хорошую страницу при чтении файла в первую очередь.

Ответы [ 2 ]

5 голосов
/ 22 октября 2010

С макушки моей головы ..

string Recover(string input)
{
   return Encoding.GetEncoding("iso-8859-2").GetString(Encoding.GetEncoding(1251).GetBytes(input));
}
4 голосов
/ 22 октября 2010

Вы можете использовать методы класса System.Text.Encoding:

using System.Text;
using System;

class EncodingConverter
{
    static string ConvertEncoding(string input, 
        Encoding srcEncoding, 
        Encoding targetEncoding)
    {
        byte[] buffer = srcEncoding.GetBytes(input);
        return targetEncoding.GetString(buffer);
    }

    static void Main(string[] args)
    {
        string input = args[0];
        string converted = ConvertEncoding(input, 
            Encoding.GetEncoding("windows-1250"), 
            Encoding.GetEncoding("iso-8859-2"));
        Console.WriteLine(converted);
    }
}
...