代码:
// dotnet core version
// install-package System.Text.Encoding.CodePages
EncodingProvider encodingProvider = CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(encodingProvider);
Console.OutputEncoding = Encoding.GetEncoding("GB2312");
// full dotnet framework version
static void Main(string[] args)
{
try
{
var s = Encoding.GetEncoding(936);
Console.OutputEncoding = s;
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.WriteLine(ex.Message);
}
Console.WriteLine("中文");
Console.ReadLine();
}
当我尝试在控制台上设置OutputEncoding时,抛出IOException:参数不正确。这在我的AWS EC2实例(Windows Server 2016 Datacenter)上发生,但在我的本地Windows 10专业版计算机上运行正常。我已经尝试了dotnet核心和完整的dotnet框架。
答案 0 :(得分:1)
感谢DmytroMukalov指出了正确的方向。这是在AWS EC2 Windows实例上启用GB2312 / 936代码页的方法
https://superuser.com/questions/692709/why-sometimes-the-codepage-is-invalid-in-console
在Windows 7中,仅当Windows系统范围的非Unicode语言环境设置为日语时,才可以设置932代码页(在需要日语消息之前,不需要安装其他语言支持;))。不幸的是,设置区域设置后,您需要重新启动Windows。我想您提到的其他代码页就是这种情况。重新启动后,您的默认语言环境将为932,并且您还将拥有日语目录分隔符
如何查看和更改系统区域设置以使用我选择的语言