当前位置:  开发笔记 > 编程语言 > 正文

Unicode,UTF,ASCII,ANSI格式差异

如何解决《Unicode,UTF,ASCII,ANSI格式差异》经验,为你挑选了2个好方法。

是什么之间的区别Unicode,UTF8,UTF7,UTF16,UTF32,ASCII,和ANSI编码?

这些对程序员有什么帮助?



1> Jon Skeet..:

列出你的清单:

" Unicode "不是一种编码,但遗憾的是,许多文档都不精确地使用它来引用特定系统默认使用的任何Unicode编码.在Windows和Java上,这通常意味着UTF-16; 在许多其他地方,它意味着UTF-8.正确地,Unicode指的是抽象字符集本身,而不是任何特定的编码.

UTF-16:每个"代码单元"2个字节.这是.NET中字符串的本机格式,通常在Windows和Java中.基本多语言平面(BMP)之外的值被编码为代理对.(这些是相对很少使用的 - 这是一个很好的工作,因为很少有开发人员把它们弄好,我怀疑.我非常怀疑我这样做.)

UTF-8:可变长度编码,每个代码点1-4个字节.ASCII值使用1个字节编码为ASCII.

UTF-7:通常用于邮件编码.如果你认为你需要它并且你没有做邮件,那你可能是错的.(这只是我在新闻组等人发布的经历 - 在邮件之外,根本没有被广泛使用.)

UTF-32:固定宽度编码,每个代码点使用4个字节.这不是很有效,但在BMP之外使生活更轻松.我有一个.NET Utf32String类作为我的MiscUtil库的一部分,如果你想要它.(请注意,它没有经过彻底的测试.)

ASCII:仅使用底部7位的单字节编码.(Unicode代码点0-127.)没有重音等.

ANSI:没有一个固定的ANSI编码 - 它们有很多.通常当人们说"ANSI"时,他们的意思是"我的系统的默认语言环境/代码页",它是通过Encoding.Default获得的,通常是Windows-1252但可以是其他语言环境.

我的Unicode页面上有更多内容以及调试Unicode问题的提示.

另一个重要的代码资源是unicode.org,其中包含的信息比您能够通过的信息更多 - 可能最有用的是代码图表.


应用于Microsoft的8位代码页时,术语"ANSI"是用词不当.它们基于为ANSI标准化提交的草案,但ANSI本身从未标准化它们.Windows-1252(代码页通常称为"ANSI")类似于ISO 8859-1(Latin-1),但Windows-1252的可打印字符在0x80..0x9F范围内,其中ISO 8859-1具有该范围内的控制字符.Unicode还具有该范围内的控制字符.https://en.wikipedia.org/wiki/Windows_code_page
对于UTF-16,恕我直言,我会说"每个代码单元2个字节",因为BMP之外的代码点将以代理对编码为2个代码单元(4个字节).
@Andrew:不,没有(通用)编码标记.Windows 1252不能代表Unicode BOM,它没有意义,因为它只是一个每字节一个字节的编码.

2> Tomalak..:

一些阅读让你开始编写字符编码: Joel on Software:绝对最低每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)

顺便说一下 - ASP.NET与它无关.编码是普遍的.


文章撰写6年后回答这里.我写完这篇文章8年后就读到了它.14年后,它仍然是一个很好的阅读.那是我一生中的一半以上.难以置信.
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有