System.Text.Encoding.Default 属性

本文提供了此 API 参考文档的补充说明。

警告

不同的计算机可以使用不同的编码作为默认值,并且默认编码可以在单个计算机上更改。 如果使用 Encoding.Default 编码对计算机之间流式传输或在同一台计算机上的不同时间检索的数据进行编码和解码,则可能会错误地转换该数据。 此外,属性返回的 Default 编码使用最适合的回退将不受支持的字符映射到代码页支持的字符。 出于这些原因,不建议使用默认编码。 若要确保正确解码已编码的字节,应使用 Unicode 编码,例如 UTF8EncodingUnicodeEncoding。 还可以使用更高级别的协议来确保使用相同的格式进行编码和解码。

.NET Framework

在 .NET Framework 中,该 Default 属性始终获取系统的活动代码页,并创建一个 Encoding 与之对应的对象。 活动代码页可以是 ANSI 代码页,其中包括 ASCII 字符集以及因代码页而异的其他字符。 由于基于 ANSI 代码页的所有 Default 编码都会丢失数据,因此请考虑改用 Encoding.UTF8 编码。 UTF-8 在 U+00 到 U+7F 范围内通常相同,但可以在 ASCII 范围之外对字符进行编码,而不会丢失。

.NET Core

在 .NET Core 中,属性Default始终返回 .UTF8Encoding .NET Core 应用程序运行的所有操作系统(Windows、Linux 和 macOS)都支持 UTF-8。