我打电话给下面的线路。呼叫无限挂起。
Encoding.GetEncoding(1251);
Encoding.GetEncoding("Windows-1251");
Run Code Online (Sandbox Code Playgroud)
我正在使用:
该方法不会阻塞。很可能它会抛出异常,其余的代码以一种使代码看起来像是阻塞的方式处理异常。也许有一个catch {}地方
来自 .NET 中的字符编码中的 .NET Core 注释
默认情况下,.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!");
}
Run Code Online (Sandbox Code Playgroud)
你会得到一个例外:
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
Run Code Online (Sandbox Code Playgroud)
您可以通过添加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!");
}
Run Code Online (Sandbox Code Playgroud)
这次应用程序不会抛出。
| 归档时间: |
|
| 查看次数: |
2695 次 |
| 最近记录: |