Unicode与UTF-8

时间:2015-03-23 05:51:42

标签: powershell unicode utf-8 utf-16

我认为Windows目前默认为“Unicode”的UTF-16,但未来可能不会这样。

因此,使用

会更好吗?
[System.Text.Encoding]::UTF8.GetString($someByteArray)

而不是以下?:

[System.Text.Encoding]::Unicode.GetString($someByteArray)

2 个答案:

答案 0 :(得分:7)

  

将来情况可能并非如此。

Unicode不是潜在变量编码;这只是微软(令人遗憾的误导性)UTF-16LE名称。

它不会改变。即使微软开始在UTF-8或UTF-32中本地实现Windows API(没有任何迹象表明会发生),System.Text.Encoding.Unicode必须保持UTF-16LE,因为它是由.NET定义的。说明书

  

最好使用UTF8代替Unicode吗?

如果字节数组包含UTF-8编码的字节,则使用UTF8;如果它们是UTF-16LE,则使用Unicode

如果你要选择使用什么编码来存储静态数据,那么出于空间效率的原因,UTF-8通常是更好的选择。

答案 1 :(得分:2)

首先,是Windows defaults to UTF-16。我个人会使用UTF-8,因为我编写的大多数应用程序都必须与Linux应用程序或某种形式的http进行通信,因此更有可能使用UTF-8。

此外,即使您的所有代码都与Microsoft系统一起使用,它也很容易转换为UTF-8,如果.NET开始需要,简单的替代正则表达式可以将所有内容更改为Unicode(UTF-16)。