我打电话给下面这几行。电话无限地挂起。
Encoding.GetEncoding(1251);
Encoding.GetEncoding("Windows-1251");
我正在使用:
答案 0 :(得分:3)
该方法不会阻止。它很可能抛出,其余代码处理异常的方式使代码看起来像是阻塞的。也许某个地方有一个catch {}
默认情况下,.NET Core不提供除代码页28591和Unicode编码之外的任何代码页编码,例如UTF-8和UTF-16。但是,您可以将以.NET为目标的标准Windows应用程序中的代码页编码添加到您的应用程序中。有关完整信息,请参阅CodePagesEncodingProvider主题。
由于.NET和Windows已经使用UTF16并且几乎所有网站,REST API,文件都使用UTF8,所以不如此奇怪。
如果您尝试使用简单的控制台应用程序:
static void Main(string[] args)
{
var enc=Encoding.GetEncoding(1251);
Console.WriteLine(enc);
Console.WriteLine("Hello World!");
}
你会得到一个例外:
Unhandled Exception: System.NotSupportedException: No data is available for encoding 1251.
For information on defining a custom encoding, see the documentation for the
Encoding.RegisterProvider method.
at System.Text.Encoding.GetEncoding(Int32 codepage)
at encodingtest.Program.Main(String[] args) in H:\Projects\encodingtest\Program.cs:line 11
您可以通过添加System.Text.Encoding.CodePages包并注册它来安装其他代码页:
static void Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc=Encoding.GetEncoding(1251);
Console.WriteLine(enc);
Console.WriteLine("Hello World!");
}
这次申请不会抛出。