如何查找 1251 代码页的编码
我需要为 1251 代码页创建 System.Encoding。
在我使用的俄语 Windows 上,
Encoding encoding = Encoding.Default
恐怕这会根据 Windows 产生不同的结果
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正确,如果使用
Encoding.Default
,您将在不同的机器上得到不同的结果。如果您想要特定的代码页,可以使用 Encoding.GetEncoding:
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:
对于.NET Core,您还需要引用System.Text.Encoding.CodePages包,然后使用Encoding.RegisterProvider:
For .NET Core you also need to reference the System.Text.Encoding.CodePages package and then use Encoding.RegisterProvider:
.NET Framework/.NET Core 支持大量字符编码和代码页。若要检索 .NET Framework/.NET Core 中存在的编码,请将 EncodingProvider 对象传递给 Encoding.RegisterProvider 方法,以使 EncodingProvider 对象提供的编码可供公共语言运行时使用。 Microsoft 文档参考
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
为了完整起见,有一个 采用
int
(代码页)参数的GetEncoding()
重载:同样对于 .NET Core 和 .NET 5+,您需要调用
Encoding.RegisterProvider()
方法使字符编码在平台上可用。如果你不调用它,你可能会得到一个 System.NotSupportedException :For completeness, there is a
GetEncoding()
overload taking anint
(codepage) parameter:Also for .NET Core and .NET 5+ you need to call the
Encoding.RegisterProvider()
method to make character encodings available on a platform. If you don't call it, you will probably get aSystem.NotSupportedException
saying