Unicode,UTF,ASCII,ANSI格式的区别

UnicodeUTF8UTF7UTF16UTF32ASCIIANSI编码有什么区别?

这对程序员有什么帮助?

顺着你的名单:

  • “ Unicode ”不是一种编码,尽pipe不幸的是,很多文档不精确地使用它来指代默认情况下特定系统使用的任何Unicode编码。 在Windows和Java上,这通常意味着UTF-16; 在许多其他地方,这意味着UTF-8。 正确地说,Unicode是指抽象字符集本身,而不是任何特定的编码。
  • UTF-16 :每个“代码单元”2个字节。 这是.NET中string的本地格式,通常在Windows和Java中。 基本多语言平面 (BMP)以外的值被编码为代理对。 (这些是相当less用的 – 这是一个很好的工作,因为很less有开发人员把它们弄对,我怀疑,我非常怀疑我做的。
  • UTF-8 :可变长度编码,每码点1-4个字节。 ASCII值使用1个字节编码为ASCII。
  • UTF-7 :通常用于邮件编码。 有机会,如果你认为你需要它,而你没有做邮件,那么你错了。 (这只是我在新闻组等人发帖的经验 – 外面的邮件,它真的没有被广泛使用。)
  • UTF-32 :固定宽度编码,每个代码点使用4个字节。 这不是非常有效,但使BMP之外的生活更容易。 我有一个.NET Utf32String类作为我的MiscUtil库的一部分,如果你想要它。 (这不是很彻底的testing,介意你。)
  • ASCII :仅使用底部7位的单字节编码。 (Unicode代码点0-127)没有口音等
  • ANSI:没有一个固定的ANSI编码 – 有很多。 通常当人们说“ANSI”时,他们的意思是“我的系统的默认语言环境/代码页”,通过Encoding.Default获取 ,通常是Windows-1252,但可以是其他语言环境。

还有更多的在我的Unicode页面和debuggingUnicode问题的提示 。

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

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

顺便说一下 – ASP.NET与它无关。 编码是通用的。