什么';Unicode和UTF-8之间的区别是什么?

什么';Unicode和UTF-8之间的区别是什么?,unicode,utf-8,Unicode,Utf 8,考虑: unicode=utf16是真的吗 许多人说Unicode是一种标准,而不是编码,但大多数编辑器实际上支持另存为Unicode编码 Unicode的发展旨在 在创建新的映射标准时 大多数电影中的人物 今天使用的语言, 以及其他 不是很重要,但可能是 创建文本所必需的。UTF-8 这仅仅是你可以选择的众多方式中的一种 可以对文件进行编码,因为存在 您可以通过多种方式对 将文件中的字符转换为Unicode 资料来源: 事情没那么简单 UTF-16是一种16位可变宽度编码。简单地称某些东西为

考虑:

unicode=utf16是真的吗

许多人说Unicode是一种标准,而不是编码,但大多数编辑器实际上支持另存为Unicode编码

Unicode的发展旨在 在创建新的映射标准时 大多数电影中的人物 今天使用的语言, 以及其他 不是很重要,但可能是 创建文本所必需的。UTF-8 这仅仅是你可以选择的众多方式中的一种 可以对文件进行编码,因为存在 您可以通过多种方式对 将文件中的字符转换为Unicode

资料来源:

事情没那么简单

UTF-16是一种16位可变宽度编码。简单地称某些东西为“Unicode”是不明确的,因为“Unicode”指的是字符编码的一整套标准。Unicode不是一种编码


当然,还有必须的链接。

这很奇怪。Unicode是一种标准,而不是编码。因为可以指定端点,所以我猜它实际上是UTF-16或者可能是32


这个菜单从哪里提供?

除了Trufa的评论,Unicode显然不是UTF-16。当他们第一次研究Unicode时,有人推测16位整数可能足以存储任何代码,但实际上并非如此。然而,UTF-16是Unicode的另一种有效编码——除了8位和32位变体之外——我相信这是Microsoft在NT派生的操作系统上运行时在内存中使用的编码

实际上,大多数编辑器都支持另存为“Unicode”编码

这是Windows犯下的一个不幸的错误命名

因为Windows在内部使用UTF-16LE编码作为Unicode字符串的内存存储格式,所以它认为这是Unicode文本的自然编码。在Windows世界中,有ANSI字符串(当前计算机上的系统代码页,完全不可移植)和Unicode字符串(内部存储为UTF-16LE)

这一切都是在Unicode的早期,在我们意识到UCS-2还不够,在UTF-8发明之前设计出来的。这就是为什么Windows对UTF-8的支持非常差的原因

这种错误的命名方案成为用户界面的一部分。使用Windows的编码支持来提供一系列编码的文本编辑器将自动且不适当地将UTF-16LE描述为“Unicode”,而UTF-16BE(如果提供)将描述为“Unicode大端”

(其他自己进行编码的编辑器,如Notepad++,没有这个问题。)


如果它让你感觉更好,“ANSI”字符串也不是基于任何ANSI标准。

这里显示了很多误解。Unicode不是编码,但Unicode标准主要用于编码

ISO10646是您(可能)关心的国际字符集。它定义了一组命名字符(例如,“拉丁大写字母a”或“希腊小写字母alpha”)和一组代码点(分配给每个字符的数字——例如,这两个字符分别为61十六进制和3B1十六进制;对于Unicode代码点,标准符号为U+0061和U+03B1)

Unicode曾一度定义了自己的字符集,或多或少地与ISO10646竞争。这是一个16位字符集,但不是UTF-16;它被称为UCS-2。它包括一种颇具争议的方法,试图将必要字符的数量控制在最低限度(汉族统一——基本上将有点相似的汉语、日语和韩语字符视为同一个字符)

从那时起,Unicode联盟默许这是行不通的,现在主要集中在编码ISO10646字符集的方法上。主要的方法是UTF-8、UTF-16和UCS-4(又名UTF-32)。那些(UTF-8除外)也有LE(小端)和BE(大端)变体


就其本身而言,“Unicode”几乎可以指上述任何一种(尽管我们可能会排除它显式显示的其他代码,例如UTF-8)。“Unicode”的非限定使用可能在Windows上最常见,在Windows上几乎肯定会提到UTF-16。早期版本的Windows NT在UCS-2流行时采用Unicode。在UCS-2被宣布过时后(如果内存可用的话,大约是Win2k),他们切换到UTF-16,这是最类似于UCS-2的(事实上,“基本多语言平面”中的字符是相同的,涵盖了很多,包括大多数西欧语言的所有字符)。

UTF-16和UTF-8都是Unicode编码。它们都是Unicode;一个不比另一个多Unicode


不要让一件来自微软的不幸历史文物迷惑你。

正如拉斯姆斯在他的文章中所说:

如果被问到这个问题,“UTF-8和 “Unicode?”,您能否自信地用简短而准确的回答 回答?在这些国际化的日子里,所有开发人员都应该 能够做到这一点。我怀疑我们中的许多人不理解这些概念 我们也应该这样做。如果你觉得自己属于这个群体,你应该 阅读这篇关于字符集和编码的超短介绍

实际上,比较UTF-8和Unicode就像比较苹果和苹果 橙子:

UTF-8是一种编码-Unicode是一种字符 设置

字符集是具有唯一数字(这些数字)的字符列表 数字有时被称为“代码点”)。例如,在 Unicode字符集,A的数字为41

另一方面,编码是一种转换 将数字列表转换为二进制,以便存储在磁盘上。例如 UTF-8将数字序列1、2、3、4转换为如下:

00000001 00000010 00000011 00000100 
1101000 1100101 1101100 1101100 1101111 
104 101 108 108 111