大小重要吗?
如您所知,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 触发器的视图,但这可能会花费您比节省更多的字节数。