【问题标题】:Is it significantly better to use ISO-8859-1 rather than UTF-8 wherever possible?尽可能使用 ISO-8859-1 而不是 UTF-8 明显更好吗?
【发布时间】:2011-12-06 22:18:34
【问题描述】:

对于脚本的全球化,使用UTF-8 作为默认字符集是很常见的;例如在 HTML 或 mysql 的默认字符集中。这也是拉丁网站的情况,其中字符属于ISO-8859-1 类。当不需要UTF-8 字符时,使用ISO-8859-1 不是很有利吗?从有利,我的意思是非常有益。

我的意思是UTF-8只有0-127个字符是1个字节,128-255个是2个字节;其中ISO-8859-1 是 1 字节系统。它不是在数据库存储中发挥关键作用吗?

【问题讨论】:

  • “更好”是如此不具体,以至于意义不大。你要比较的究竟是什么品质?你想改进什么?

标签: mysql utf-8 character-encoding storage


【解决方案1】:

如果您现在和永远需要的一切都是 ISO-8859-1,那么您将通过使用它来节省空间,但如果使用的大多数字符都

【讨论】:

    【解决方案2】:

    这 127 个UTF-8 1 字节字符中的大多数在您使用ISO-8859-1 时使用得最多。让我们看看here。如果您使用 UTF-8,当您使用 127-255 个字符之一时,您将需要 1 个额外字节not 所以commons I bet) .

    我的意见?如果可以并且没有问题,请使用UTF-8。您节省一天的时间,您将需要一些额外的字符(或您必须翻译您的内容的那一天),这确实值得在数据库中到处使用一些额外的字节......

    【讨论】:

      【解决方案3】:

      简答:没关系。

      长(呃)答案:这样想。您有一个包含论坛消息的message 表。你有很多消息(比如说,100 万条)。假设每条消息由于 UTF-8 而占用 10 个额外字节。那是 1000 万个额外字符,甚至不是 10MB(不计算索引)。

      对于这样一个“流行”的论坛,您最多不会使用超过 15MB 的存储空间。没什么。您绝对不必担心丢失额外的字节,UTF-8 将提供比 10 MB 更重要的好处。

      【讨论】:

        【解决方案4】:

        大小重要吗?

        如您所知,U+0080 到 U+009F 范围内的字符在 UTF-8 中占用的空间是 ISO-8859-1 中的两倍。但是,这些字符的使用频率如何?

        在我从维基百科首页获得的典型西班牙语文本中:

        Artículo bueno

        La séptima temporada de la serie de televisión de dibujos animados Los Simpson fue emitida originalmente por la cadena Fox entre el 17 de 1995 年 9 月至 1996 年 5 月 19 日。Los productores ejecutivos de la séptima temporada fueron Bill Oakley 和 Josh Weinstein, quienes producirían 21 剧集 de la temporada。大卫·米尔金为表演加油 赛跑者 de los cuatro restantes, incluyendo dos vestigios que habían sido producidos para la temporada anterior。时间间隔 estuvo nominada para dos Premios Primetime Emmy, incluyendo la categoría "Mejor programa animado (de duración menor a una hora)" y obtuvo un Premio Annie por "Mejor programa animado de televisión"。拉 版本 DVD fue lanzada a la venta en la Region 1 el 13 de diciembre de 2005, en la Region 2 el 30 de enero de 2006 y en la 地区 4 el 29 de marzo del mismo año。 La caja recopilatoria fue puesta a la venta en dos formatos diferentes: una caja con la forma de la cabeza de Marge y otra rectangle clásica, en la cual el dibujo muestra el estreno de una película。

        在 1044 个 ASCII 字符的海洋中有 17 个非 ASCII 字符。这意味着在以 UTF-8 编码时仅扩展 1.6%。几乎不值得担心,尤其是考虑到全 ASCII HTML 标记时。

        (但是,对于像Sango 这样的重音语言,差异可能很大。)

        无论如何,你的想法会如何运作?

        您打算在 windows-1252 中对所有数据进行编码吗?那不会给你全球化。地球不会停在奥得河。真正的 ISO-8859-1(缺少€)更糟;地球不会停在英吉利海峡。

        使用编码标记文本?这适用于 XML、HTML 和 SMTP。但你问:

        它不是在数据库存储中发挥关键作用吗?

        您打算如何在数据库中存储混合的 Latin-1 和 UTF-8 字符串?

        有两列EncodedText BLOB, IsUtf8 BOOLEAN?你要怎么查询?当然你不会只看EncodedText而忽略IsUtf8;这种方法导致了 mojibake。

        可以编写一个包含CASE WHEN IsUtf8 THEN EncodedText ELSE Latin1ToUtf8(EncodedText) END 列和适当的INSTEAD OF INSERT 触发器的视图,但这可能会花费您比节省更多的字节数。

        【讨论】:

          猜你喜欢
          • 2022-11-08
          • 1970-01-01
          • 1970-01-01
          • 2017-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-21
          • 2013-05-10
          相关资源
          最近更新 更多