扩展的ASCII和windows-1252(不同的代码)

时间:2015-10-06 17:11:35

标签: c# encoding

我有一个字符串,其中包含“ä”字符。 我的默认编码是1252.而char代码是228。 如何将其转换为扩展ASCII以使此代码为132?

2 个答案:

答案 0 :(得分:2)

        var s = "ä";
        var extAscii = Encoding.GetEncoding ("437");
        var enc1252 = Encoding.GetEncoding (1252);
        var bytes = enc1252.GetBytes (s);
        Console.WriteLine (bytes[0]);
        var newBytes = Encoding.Convert (enc1252, extAscii, bytes);
        Console.WriteLine (newBytes[0]);

此代码生成228,132。扩展ASCII aka代码页437现在非常具有异国情调。

答案 1 :(得分:1)

您需要使用编码437(请参阅https://en.wikipedia.org/wiki/Code_page_437)。然后,这将正确地将扩展ASCII符号“ä”转换为ANSI 1252中的相应字符:

using System;
using System.Text;

namespace helloworld
{
public class Program
{
    public static void Main(string[] args)
    {
         string text = "ä";

         byte[] bytes = Encoding.GetEncoding(1252).GetBytes(text);

         var convertedBytes = Encoding.Convert(Encoding.GetEncoding(1252),Encoding.GetEncoding(437), bytes);

         Console.WriteLine(Encoding.GetEncoding(437).GetString(convertedBytes));
    }
}

}