Encoding.UTF8或Encoding.Unicode?(Encoding.UTF8 or E

2019-10-29 22:58发布

Encoding.Unicode只为UTF-16的名称? 那么为什么叫刚刚统一,而不是UTF-16?

在编码文档微软指出,对于大多数情况和应用中,你应该避免使用Encoding.ASCIIEncoding.Default

当使用System.Text.Encoding 。 在大多数情况下,我应该使用Encoding.UnicodeEncoding.UTF8

Answer 1:

它来自Unicode的初期。 Unicode的1.0是一个16位的编码,因为它是假设,65536个点就足够了。 Unicode的2.0放弃了这一限制,但统一的尝鲜,包括微软,命名了他们的Unicode编码,并一直坚持。

现在,你应该使用UTF-8,除非你有你需要用,这样做的原因集成特定的,如传统的软件。

这样做的原因是,ASCII是UTF-8二进制兼容的,并且有很多的 ASCII在那里



Answer 2:

Encoding.Unicode只为UTF-16的名称?

是。 具体地,对于小端排序UTF-16。 Encoding具有独立的BigEndianUnicode大端UTF-16性能。

那么为什么叫刚刚统一,而不是UTF-16?

由于历史的原因。 微软是第一个公司采取统一的一个,所以它在Windows中的“统一”实施归途中的Unicode初期UTF-16被发明之前。 “统一”是微软事实上的名称来指无论其原生Unicode编码是,这曾经是UCS-2,现在是UTF-16。

当使用System.Text.Encoding 。 在大多数情况下,我应该使用Encoding.UnicodeEncoding.UTF8

这真的取决于你的特殊场景。 无论使用何种编码适合您的需求。 这两种编码有长处和短处。

UTF-8通常用于互操作性的通信协议,因为它没有从尾数问题的困扰,而且与大多数现有的基于文本的协议大体兼容。 这也是通常的字节存储比UTF-16的大多数语言小。

UTF-16 通常是更容易的内存来处理非UTF-8,这就是为什么这么多库和框架使用它的字符串。 而且它可以为字节存储比UTF-8的情况下,特别是对东亚语言。



文章来源: Encoding.UTF8 or Encoding.Unicode?