为什么没有将ASCII和ISO-8859-1编码降级为历史?

时间:2010-09-02 04:26:16

标签: encoding utf-8 character-encoding

在我看来,如果UTF-8是迄今为止唯一使用的编码,那么代码问题就会少得多:

  • 甚至不需要考虑编码问题。
  • 混合1-2字节字符流没有问题,因为所有内容都使用2个字节。
  • 浏览器无需等待<meta>标记指定编码,然后才能执行任何操作。 StackOverflow甚至没有元标记,使浏览器首先下载整页,减慢页面渲染速度。
  • 您永远不会在旧网页上看到?和其他随机符号(例如代替Microsoft Word的特殊[读:可怕]引号)。
  • 可以用UTF-8表示更多字符。
  • 我现在想不到的其他事情。

那么,为什么没有从太空中扼杀劣质编码?

5 个答案:

答案 0 :(得分:9)

  
      
  • 甚至不需要考虑编码问题。
  •   

真。除了仍然是旧ASCII格式的所有数据。

  
      
  • 混合1-2字节字符流没有问题,因为一切都使用2个字节。
  •   

不正确的。 UTF-8是可变长度,从1到6个字节。

  
      
  • 浏览器无需等待标记指定编码,然后才能执行任何操作。 StackOverflow甚至没有元标记,使浏览器首先下载整页,减慢页面渲染速度。
  •   

浏览器通常不会等待整页,他们会根据页面数据的第一部分进行猜测。

  
      
  • 你永远不会看到?和旧网页上的其他随机符号(例如代替Microsoft Word的特殊[read:horrible]引号)。
  •   

除了使用其他非UTF-8编码的所有其他旧网页(非英语世界非常大)。

  
      
  • 可以用UTF-8表示更多字符。
  •   

真。您的数据验证问题也变得更加困难。

答案 1 :(得分:6)

为什么EBCDIC,Baudot和Morse仍然没有从轨道上进行治疗?为什么在Gottlieb Daimler装运他的第一辆汽车后的那天,马车鞭子制造商没有关门?

将技术重新定位到历史记录需要非零时间。

答案 2 :(得分:1)

  

混合1-2字节无问题   字符流,因为   一切都使用2个字节。

根本不是真的。 UTF-8是一种混合宽度的1,2,3和4字节编码。您可能一直在考虑使用UTF-16,但即使是一段时间内也有4字节字符。如果你想要一个“简单”的固定宽度编码,你需要UTF-32。

  

你永远不会看到?和其他随机的   旧网页上的符号

即使使用UTF-8网页,您仍然可能没有支持每个Unicode字符的字体,因此这仍然是一个问题。

  

可以表示更多字符   UTF-8。

有时这是一个缺点。拥有更多字符意味着需要更多位来编码字符。并跟踪哪些是字母,数字等。并存储用于显示这些字符的字体。并处理其他与Unicode相关的复杂性,如规范化。

对于具有千兆字节RAM的现代计算机来说,这可能不是问题,但不要指望您的TI-83不会很快支持Unicode。


但是,如果你需要那些额外的字符,那么使用UTF-8比使用UTF-8更容易,而不是拥有数以万计的不同8位字符编码(加上一些)非自同步的东亚多字节编码)。

  

那么为什么没有劣质编码呢?   从太空中被摧毁了?

在很大程度上,这是因为“劣等”的编程语言还没有从空间中解脱出来。很多代码仍然用C和C ++(甚至是COBOL!)这样的语言编写,这些语言早于Unicode并且仍然没有很好的支持。

非常希望我们摆脱某些库使用以char为基础的字符串以UTF-8编码的情况,而其他人认为char用于遗留编码和Unicode应始终使用wchar_t,然后您必须处理wchar_t是UTF-16还是UTF-32(或两者都不是)。

答案 3 :(得分:0)

我不认为UTF-8使用“2位”它的可变长度。此外,许多操作系统级代码分别是UTF-16和UTF-32,这意味着可以选择ASCII或ISO-8859-1之间的拉丁文编码。

答案 4 :(得分:0)

嗯,你的问题有点为什么 - 世界是如此糟糕的抱怨。因为它是如此。使用UTF-8以外的其他编码编写的页面来自UTF-8受操作系统严重支持以及UTF-8尚未达到事实标准的时间。

只要有人不会改变它们,这些页面将保持其原始编码,这在很多情况下不太可能。其中许多人不再受任何人的支持。

互联网上还有许多非unicode编码的文档,有多种格式。有人可以转换它们,但如上所述,它需要付出很多努力。

因此,对非unicode的支持也必须保留。

对于当前时代,请遵守以下规则:当有人使用非unicode编码时,小猫会死亡。