Encoding 为什么有不同的编码类型?
这是一个noob问题,但我想知道为什么会有不同的编码类型以及它们之间的区别(如ASCII、utf-8和16、base64等)。我认为原因很多,但主要的一点是:“需要显示(编码)多少字符?”例如,如果你住在美国,你可以使用ASCII。但在许多国家,我们需要像ä、å、ü等这样的字符(如果只有ASCII码,或者你试图将此文本解读为ASCII编码的文本,你会在ä、å和ü的地方看到一些奇怪的字符)。想想中国、日本、泰国和其他“异国”国家。你在世界各地看到的照片上那些奇怪的数字可能只是字母,而不是漂亮的图片 至于不同编码类型之间的差异,您需要查看它们的规范。这是UTF-8的一些东西Encoding 为什么有不同的编码类型?,encoding,character-encoding,Encoding,Character Encoding,这是一个noob问题,但我想知道为什么会有不同的编码类型以及它们之间的区别(如ASCII、utf-8和16、base64等)。我认为原因很多,但主要的一点是:“需要显示(编码)多少字符?”例如,如果你住在美国,你可以使用ASCII。但在许多国家,我们需要像ä、å、ü等这样的字符(如果只有ASCII码,或者你试图将此文本解读为ASCII编码的文本,你会在ä、å和ü的地方看到一些奇怪的字符)。想想中国、日本、泰国和其他“异国”国家。你在世界各地看到的照片上那些奇怪的数字可能只是字母,而不是漂亮的图片
- 主要原因是能够显示更多字符。当互联网刚刚起步时,没有人真的提前计划过,以为有一天会有来自世界各地所有国家和所有语言的人使用它。所以一个小字符集就足够了。渐渐地,它被发现是有限的和以英语为中心的,因此需要更大的字符集 有这么多变体的真正原因是出现得太晚了
起初,内存和存储是昂贵的,使用超过8位(有时仅7位)的内存来存储单个字符被认为是多余的。因此,几乎所有文本都是使用每个字符7或8位来存储的。显然,8位内存不足以表示所有人类语言的字符。它几乎不足以表示一种语言中使用的大多数字符(对于某些语言来说,这甚至是不可能的)。因此,设计了许多不同的字符编码,以允许不同语言(英语、德语、希腊语、俄语等)以每个字符8位的形式对文本进行编码。毕竟,一个文本文件(通常甚至是一个计算机系统)只能用一种语言,对吗
这导致了一种情况,即没有统一的字符到任何类型的数字的映射。许多不同的、不兼容的解决方案,在这些解决方案中没有真正的中央控制。一些计算机系统被使用,另一些计算机系统被使用(或者更准确地说:EBCDIC的众多变体之一),(或者它的众多衍生物之一)或者现在几乎听不到的一大串编码中的任何一种
最后,Unicode联合会着手完成了生成单一映射的任务(以及有用但超出此答案范围的大量辅助数据)
当Unicode联盟最终产生了一个计算机可能代表的相当全面的字符列表(以及根据您的具体需要将它们编码为二进制数据的许多编码方案)时,其他字符编码方案已经被广泛使用。这大大减缓了Unicode及其编码(UTF-8、UTF-16)的采用
现在,如果您想表示文本,最好使用少数几种可以表示所有Unicode字符的编码之一。UTF-8和UTF-16加在一起应该足以满足99%的所有用例,UTF-32几乎涵盖了所有其他用例。需要明确的是:所有UTF-*编码都可以对所有有效的Unicode字符进行编码。但是由于UTF-8和UTF-16是可变宽度编码,它们可能并不适合所有用例。除非您需要能够与无法处理这些编码的遗留系统进行交互,否则现在很少有理由选择其他任何东西。ahhh,为了支持其他语言的字符,thanksI会说“计算机使用”而不是“互联网”。人们希望使用母语的计算机程序(Word、Photoshop、Thunderbird等等)。我(再次)编辑了我的答案以强调本地化点。@Coola你写的完全错了。Unicode不仅仅是“非英语”字符。它包括许多排字员和校对员、数学家和物理学家、语言学家和词典编纂者使用的专业字符,甚至是100%的英语