任何人都可以给我一个简洁的定义
我不是在维基百科链接或令人难以置信的细节之后,只是一些关于Unicode的巨大变化如何以及为何出现的简要信息以及为什么你应该关心程序员。
答案 0 :(得分:21)
答案 1 :(得分:12)
如果您想要真正的简介: Unicode in 5 Minutes
或者如果你在追逐单行:
为什么要关心?因为在不知道正在使用的字符集和编码的情况下,您实际上并不知道给定字节流表示的字符。例如,字节0xDE可以编码
答案 2 :(得分:7)
除了经常引用的Joel之外,我还有my own article从.NET中心的角度来看它,只是为了变化......
答案 3 :(得分:4)
在这里,请阅读乔尔本人的精彩解释。
答案 4 :(得分:3)
是的,我得到了一些见解,但这可能是错的,但是这有助于我理解它。
我们来看一些文字吧。它作为一系列字节存储在计算机ram中,代码页只是您和我读取的字节和字符之间的映射表。所以像记事本这样的东西带有它的代码页,并将字节转换到你的屏幕,你会看到一堆垃圾,颠倒的问号等。这并不意味着你的数据只是乱码只是读取字节的应用程序没有使用正确的代码页。有些应用程序在检测正确的代码页时比其他应用程序更聪明,内存中的某些字节流包含代表字节顺序标记的BOM,这可以声明要使用的正确代码页。
UTF7,816等都是使用不同格式的不同代码页。
使用不同代码页存储为字节的相同文件将具有不同的文件大小,因为字节的存储方式不同。
它们与Windows 1252没有什么不同,因为那只是另一个代码页。
为了更好的答案,请尝试其中一个链接。
答案 5 :(得分:2)
其他人已经指出了足够好的参考资料。我没有列出真正的虚拟指南,而是列出了Unicode Consortium页面的一些指示。您将在Unicode Consortium页面中找到使用不同编码的更多实质性原因。
Unicode FAQ是一个很好的回答一些(不是全部)查询的地方。
关于为什么存在Unicode的更简洁的答案出现在Newcomer's section of the Unicode website本身:
Unicode为其提供唯一编号 每个角色,无论是什么 平台,无论什么程序, 无论用什么语言。
就使用UTF-8,UTF-16或UTF-32的技术原因而言,答案在于Technical Introduction to Unicode:
UTF-8很受HTML和类似的欢迎 协议。 UTF-8是一种方式 转换所有Unicode字符 进入可变长度编码 字节。它的优点是 对应的Unicode字符 熟悉的ASCII集具有相同的功能 字节值为ASCII,以及Unicode 转换成UTF-8的字符可以 与许多现有软件一起使用 没有广泛的软件重写。
UTF-16在许多环境中很受欢迎 需要平衡有效访问 经济使用的人物 存储。它相当紧凑 所有使用频繁的角色都适合 同时进入一个16位代码单元 所有其他角色都可以访问 通过成对的16位代码单元。
UTF-32在内存空间很受欢迎 没关系,但固定宽度,单一 代码单元访问字符是 期望。每个Unicode字符都是 以单个32位代码单元编码 使用UTF-32时。
最多需要三种编码形式 每个4字节(或32位)数据 字符。
一般的拇指规则是当您的应用程序支持的主要语言在印度河以西,UTF-16用于对面(印度河东部)时使用UTF-8,当您担心时使用UTF-32关于利用统一存储的字符。
顺便说一句,UTF-7不是Unicode标准,主要用于邮件应用程序。