Dummy的Unicode指南

Are*_*win 12 unicode utf-8 utf-16 codepages

任何人都可以给我一个简明的定义

  • 统一
  • UTF7
  • UTF8
  • UTF16
  • UTF32
  • 代码页
  • 它们与Ascii/Ansi/Windows 1252的区别

我不是在维基百科链接或令人难以置信的细节之后,只是一些简短的信息,关于Unicode的巨大变化是如何以及为什么出现的,以及为什么你应该关心程序员.

Tim*_*Tim 21

这是一个良好的开端:绝对最低每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)

  • 唯一需要注意的是,有些信息已经过时(unicode是一个移动的目标),尽管提问者真的需要关心他的兴趣水平 (3认同)
  • 实际上,乔经常提到的文章即使在出版之日(2003年)也不正确.正确的UTF-8最多不超过6个字节(只有4个),有"纯文本"这样的东西(与编码无关),UCS不是Unicode术语(是ISO术语),wchar_t和L "Hello"不一定是Unicode.但是,嘿,他比其他人更了解,即使其中有些是错的.消息仍然是正确的:-) (2认同)

Mtn*_*ark 12

如果你想要一个非常简短的介绍: 5分钟内的Unicode

或者,如果你追求的是单行:

  • Unicode:字符到整数("代码点")的映射,范围为0到1,114,111; 涵盖了几乎所有正在使用的书面语言
  • UTF7:代码的编码指向高位清零的字节流; 一般不要使用
  • UTF8:代码的编码指向字节流,其中每个字符可以用一个,两个,三个或四个字节来表示; 应该是您编码的主要选择
  • UTF16:代码的编码指向字流(16位单元),其中每个字符可能需要一个或两个字(两个或四个字节)来表示
  • UTF32:代码的编码指向32位单元的流,其中每个字符恰好占用一个单元(四个字节); 有时用于内部表示
  • 代码页: DOS和Windows中的系统,其中字符被分配给整数,以及相关的编码; 每个只涵盖一部分语言.请注意,这些分配通常与Unicode分配不同
  • ASCII:非常常见的字符到整数的分配,以及直接编码为字节(所有高位清除); 赋值是Unicode的子集,编码是UTF-8的子集
  • ANSI:标准组织
  • Windows 1252:常用的代码页; 它类似于ISO-8859-1或Latin-1,但不一样,两者经常混淆

你为什么在乎?因为在不知道正在使用的字符集和编码的情况下,您实际上并不知道给定字节流表示的字符.例如,字节0xDE可以编码

  • Þ(拉丁文大写字母)
  • fi(LATIN SMALL LIGATURE FI)
  • (与TONOS的GREEK小写字母ETA)
  • 或13个其他字符,具体取决于所使用的编码和字符集.


Jon*_*eet 7

除了经常引用的Joel之外,我还有自己的文章,从以.NET为中心的观点来看,只是为了变化...