25

I need to create System.Encoding for 1251 codepage.

On my russian Windows I use

Encoding encoding = Encoding.Default

I am afraid this will produce different results depending on Windows

Captain Comic
  • 15,744
  • 43
  • 110
  • 148

3 Answers3

45

Correct, you will get different results on different machines if you use Encoding.Default.

If you want a specific codepage, you can use Encoding.GetEncoding:

Encoding encoding = Encoding.GetEncoding("windows-1251");
kiewic
  • 15,852
  • 13
  • 78
  • 101
Michael Madsen
  • 54,231
  • 8
  • 72
  • 83
  • 2
    Yeap, I should have just RTFM. Another option is specifying codepage by name instead of number as you did. In my case that would be windows-1251 – Captain Comic Oct 19 '10 at 11:22
18

For .NET Core you also need to reference the System.Text.Encoding.CodePages package and then use Encoding.RegisterProvider:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
razon
  • 3,882
  • 2
  • 33
  • 46
4

The .NET Framework/.NET Core supports a large number of character encodings and code pages. To retrieve an encoding that is present in the .NET Framework/.NET Core pass the EncodingProvider object to the Encoding.RegisterProvider method to make the encodings supplied by the EncodingProvider object available to the common language runtime. Microsoft Document Reference

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
Charan Ghate
  • 1,384
  • 15
  • 32