Имеет ли значение размер?
Как вы знаете, символы в диапазоне от U + 0080 до U + 009F занимают вдвое больше места в UTF-8, чем в ISO-8859-1. Но как часто эти персонажи привыкают?
В типичном испанском тексте я получил с первой страницы Википедии:
Artículo bueno
«Съемочная временная серия телесериалов»;
Симпсон фью эммитида оригинальная порция Fox Entre El 17 де
сентябрь 1995 года 19 мая 1996 года. Los productores ejecutivos
de la séptima temporada fueron Билл Оукли и Джош Вайнштейн, quienes
производственный 21 эпизод де ла темпорада. Давид Миркин фью эль шоу
бегун-де-лос-куатро востребованный, в том числе досешио хабиан
sido producidos para la temporada anterior. La Séptima Temporada
Estvo Nominada Para Dos Premios Primetime Эмми, включая
категория "Большая программа анимации"
obtuvo un Premio Annie por "Моя основная программа по телевидению". ля
Версия на DVD-сайте Fue Lanzada a la Venta en la Región 1 el 13 de
Декабрь 2005, en la Región 2 el 30 de enero de 2006 de en la
Регион 4-й квартал 29 марта. La Caja Recopilatoria Fue
Puesta A La Venta En Dos Formatos различных: Una Caja Con La Forma де
La Cabeza de Marge и otra Прямоугольная классика, en la cual el dibujo
muestra el estreno de una película.
В море из 1044 символов ASCII 17 символов, не относящихся к ASCII. Это означает расширение только на 1,6% при кодировании в UTF-8. Вряд ли стоит беспокоиться, особенно если учитывать HTML-разметку полностью ASCII.
(Однако, различие может быть значительным для более акцентированного языка, такого как Sango .)
Как ваша идея сработает?
Собираетесь ли вы кодировать все свои данные в windows-1252? Это не дает вам глобализации; земной шар не останавливается у реки Одер. Правда ISO-8859-1 (без & euro;) еще хуже; глобус не останавливается на английском канале.
Пометить текст с его кодировкой? Это работает для XML, HTML и SMTP. Но вы спросили:
Разве это не играет решающей роли в хранилище базы данных?
Как вы собираетесь хранить смешанные строки Latin-1 и UTF-8 в базе данных?
Есть две колонки EncodedText BLOB, IsUtf8 BOOLEAN
? Как ты собираешься спросить это? Конечно, вы не просто посмотрите на EncodedText
и проигнорируете IsUtf8
; этот подход приводит к моджибаке.
Вы могли бы написать представление со столбцом CASE WHEN IsUtf8 THEN EncodedText ELSE Latin1ToUtf8(EncodedText) END
и правильным триггером INSTEAD OF INSERT
, но это, вероятно, будет стоить вам больше байтов, чем экономит.