如何查找1251代码页的编码

25

我需要创建1251代码页的System.Encoding。

在我的俄语Windows上,我使用以下代码:

Encoding encoding = Encoding.Default

我担心这会因为不同的Windows版本而产生不同的结果


2
http://msdn.microsoft.com/en-us/library/system.text.encoding.getencoding.aspx - bzlm
4个回答

45

如果你使用Encoding.Default,在不同的机器上会得到不同的结果。

如果你想要特定的代码页,可以使用Encoding.GetEncoding

Encoding encoding = Encoding.GetEncoding("windows-1251");

2
是的,我应该直接看文档。另一个选项是按名称而不是数字指定代码页。在我的情况下,那将是windows-1251。 - Captain Comic

18

对于.NET Core,您还需要引用System.Text.Encoding.CodePages包,然后使用Encoding.RegisterProvider:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

4
.NET Framework/.NET Core支持大量的字符编码和代码页。要检索.NET Framework/.NET Core中存在的编码,请将EncodingProvider对象传递给Encoding.RegisterProvider方法,以使EncodingProvider对象提供的编码可用于公共语言运行时。 微软文档参考
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

0
为了完整起见,还有一个GetEncoding()重载,接受一个int(代码页)参数:
Encoding encodingByCodePage = Encoding.GetEncoding(1251);

对于.NET Core和.NET 5+,您需要调用Encoding.RegisterProvider()方法来使字符编码在平台上可用。如果您不调用它,可能会出现System.NotSupportedException的错误提示:

'没有可用于编码1251的数据。有关定义自定义编码的信息,请参阅Encoding.RegisterProvider方法的文档。'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接