Unicode 与 UTF-8
Unicode vs. UTF-8
我相信 Windows 目前“Unicode”默认为 UTF-16,但将来可能不会这样。
出于这个原因,使用
会不会更好
[System.Text.Encoding]::UTF8.GetString($someByteArray)
而不是以下?:
[System.Text.Encoding]::Unicode.GetString($someByteArray)
首先,是的Windows defaults to UTF-16。我个人会使用 UTF-8,因为我编写的大多数应用程序都必须与 Linux 应用程序或某种形式的 http 进行通信,因此 UTF-8 更有可能。
此外,即使您的所有代码都用于 Microsoft 系统,也很容易转换为 UTF-8,如果 .NET 开始需要它,一个简单的替代正则表达式可以将所有内容转换为 Unicode (UTF-16)。
this may not be the case in the future.
Unicode
不是潜在可变编码;这只是微软对 UTF-16LE 的(令人遗憾的误导)名称。
它不会改变。即使 Microsoft 转向以 UTF-8 或 UTF-32 本地实现 Windows API(没有任何迹象表明会发生这种情况),System.Text.Encoding.Unicode
也必须保留 UTF-16LE,因为它是这样定义的根据 .NET 规范。
would it be better to use UTF8
instead of Unicode
?
如果字节数组包含 UTF-8 编码的字节,则使用 UTF8
,如果它们是 UTF-16LE,则使用 Unicode
。
如果您可以选择用于存储静态数据的编码,出于 space 效率原因,UTF-8 通常是更好的选择。
我相信 Windows 目前“Unicode”默认为 UTF-16,但将来可能不会这样。
出于这个原因,使用
会不会更好[System.Text.Encoding]::UTF8.GetString($someByteArray)
而不是以下?:
[System.Text.Encoding]::Unicode.GetString($someByteArray)
首先,是的Windows defaults to UTF-16。我个人会使用 UTF-8,因为我编写的大多数应用程序都必须与 Linux 应用程序或某种形式的 http 进行通信,因此 UTF-8 更有可能。
此外,即使您的所有代码都用于 Microsoft 系统,也很容易转换为 UTF-8,如果 .NET 开始需要它,一个简单的替代正则表达式可以将所有内容转换为 Unicode (UTF-16)。
this may not be the case in the future.
Unicode
不是潜在可变编码;这只是微软对 UTF-16LE 的(令人遗憾的误导)名称。
它不会改变。即使 Microsoft 转向以 UTF-8 或 UTF-32 本地实现 Windows API(没有任何迹象表明会发生这种情况),System.Text.Encoding.Unicode
也必须保留 UTF-16LE,因为它是这样定义的根据 .NET 规范。
would it be better to use
UTF8
instead ofUnicode
?
如果字节数组包含 UTF-8 编码的字节,则使用 UTF8
,如果它们是 UTF-16LE,则使用 Unicode
。
如果您可以选择用于存储静态数据的编码,出于 space 效率原因,UTF-8 通常是更好的选择。