如何在.NET Core中查找OS代码页号?

问题描述 投票:0回答:1

我需要在.NET Core应用中获取Windows默认代码页。即在英语系统上为1252,在西里尔语系统上为1251,在希腊语上为1253,等等。以前在.NET Framework 4和Mono中,可以通过Encoding.Default轻松实现。程序移至.NET Core 3.1之后,现在需要手动在每台PC上手动设置代码页号。对于某些用户来说,这并不容易。

如何返回自动检测旧版(系统)代码页?无法读取Windows注册表来检测系统设置,因为该应用程序还应该在Linux上运行,并具有从Windows PC接收(或发送给Windows PC)的外部数据。

其他使用ANSI代码页进行数据输入和输出的软件无法重写。

也许OEM代码页也很有趣(用于与仍使用DOS代码页的控制台软件进行无缝交互)。

c# text .net-core codepages
1个回答
1
投票

[第一个是.NET Framework代码,第二个是其.NET Core等效项:

//OutputEncoding = Encoding.Default;
OutputEncoding = CodePagesEncodingProvider.Instance.GetEncoding(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage);

很长,但是在Windows和Linux上都能正常工作。

DOS,EBCDIC和MacOS编码可以类似地通过CurrentCulture.TextInfo.*CodePage获得。

© www.soinside.com 2019 - 2024. All rights reserved.