首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Encoding.UTF8还是Encoding.Unicode?

Encoding.UTF8还是Encoding.Unicode?
EN

Stack Overflow用户
提问于 2018-09-27 12:40:54
回答 2查看 950关注 0票数 1

Encoding.Unicode仅仅是UTF-16的名字吗?那么为什么它只被命名为Unicode而不是UTF16呢?

编码文档中,微软声明,对于大多数场景和应用程序,您应该避免使用Encoding.ASCIIEncoding.Default

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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更小的字节存储,特别是对于东亚语言.

票数 3
EN

Stack Overflow用户

发布于 2018-09-27 12:55:00

它来源于Unicode的早期。Unicode 1.0是一种16位编码,因为假定65536个代码点就足够了。Unicode 2.0放弃了这一限制,尽管包括微软在内的Unicode的早期采用者将其编码命名为Unicode,但这一限制仍然存在。

现在,你应该使用UTF-8,除非你有一个特定的,如你需要集成的遗留软件,有理由这样做。

其原因是ASCII与UTF-8是二进制兼容的,并且有一个ASCII的地段

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52537306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档