代码之家  ›  专栏  ›  技术社区  ›  watbywbarif

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

  •  1
  • watbywbarif  · 技术社区  · 14 年前

    我用代码页windows-1251而不是iso-8859-2从文件中读取了字符串。应该是一些西里尔的弦。如何实现在C中执行以下操作的函数:

    string res = Recover("ńîôč˙");
    
    string Recover(string input)
    {
        ???
    }
    

    2 回复  |  直到 14 年前
        1
  •  5
  •   abatishchev Karl Johan    14 年前

    从我头顶上。。

    string Recover(string input)
    {
       return Encoding.GetEncoding("iso-8859-2").GetString(Encoding.GetEncoding(1251).GetBytes(input));
    }
    
        2
  •  4
  •   Dirk Vollmar    14 年前

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