我认为Windows目前默认为“Unicode”的UTF-16,但未来可能不会这样。
因此,使用
会更好吗?[System.Text.Encoding]::UTF8.GetString($someByteArray)
而不是以下?:
[System.Text.Encoding]::Unicode.GetString($someByteArray)
答案 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)。