从C#中使用错误的代码页恢复

时间:2010-10-22 11:17:31

标签: c# unicode character-encoding codepages

我通过使用代码页windows-1251从文件中读取字符串“ñîôč˙”,而不是使用iso-8859-2。它应该是一些西里尔字符串。如何实现将在C#中执行的功能:

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

string Recover(string input)
{
    ???
}

如果我在第一时间阅读文件时使用了良好的页面,那么res就是西里尔字符串。

2 个答案:

答案 0 :(得分:5)

脱离我的头顶..

string Recover(string input)
{
   return Encoding.GetEncoding("iso-8859-2").GetString(Encoding.GetEncoding(1251).GetBytes(input));
}

答案 1 :(得分:4)

您可以使用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);
    }
}