Encoding.Unicode仅仅是UTF-16的名字吗?那么为什么它只被命名为Unicode而不是UTF16呢?
在编码文档中,微软声明,对于大多数场景和应用程序,您应该避免使用Encoding.ASCII和Encoding.Default。
当使用System.Text.Encoding时。在大多数情况下,我应该使用Encoding.Unicode还是Encoding.UTF8
发布于 2018-09-28 04:40:45
Encoding.Unicode仅仅是UTF-16的名字吗?
是。特别是,为小endian UTF-16。Encoding为大端UTF-16提供了一个单独的BigEndianUnicode属性。
那么为什么它只被命名为Unicode而不是UTF16呢?
出于历史原因。微软是第一家采用Unicode的公司之一,所以在UTF-16发明之前,它在Windows上就有了" Unicode“的实现。" Unicode“是微软事实上的名称,它指的是它的原生Unicode编码,它以前是UCS-2,现在是UTF-16。
当使用类似的
System.Text.Encoding时。在大多数情况下,我应该使用Encoding.Unicode还是Encoding.UTF8?
这取决于你的特殊情况。使用适合您需要的任何编码。这两种编码都有优点和缺点。
UTF-8通常用于通信协议的互操作性,因为它不存在endian问题,并且很大程度上与大多数现有的基于文本的协议兼容。对于大多数语言来说,字节存储通常比UTF-16要小.
UTF-16通常比UTF-8更容易在内存中进行处理,这就是为什么许多库和框架将它用于String。而且它可以比UTF-8更小的字节存储,特别是对于东亚语言.
发布于 2018-09-27 12:55:00
它来源于Unicode的早期。Unicode 1.0是一种16位编码,因为假定65536个代码点就足够了。Unicode 2.0放弃了这一限制,尽管包括微软在内的Unicode的早期采用者将其编码命名为Unicode,但这一限制仍然存在。
现在,你应该使用UTF-8,除非你有一个特定的,如你需要集成的遗留软件,有理由这样做。
其原因是ASCII与UTF-8是二进制兼容的,并且有一个ASCII的地段。
https://stackoverflow.com/questions/52537306
复制相似问题