Почему кодировка ASCII и ISO-8859-1 не отошла в историю?



Мне кажется, что если бы UTF-8 была единственной кодировкой, используемой повсеместно, было бы намного меньше проблем с кодом:




  • даже не нужно думать о проблемах кодирования.

  • Нет проблем со смешанной потоковой передачей 1-2-байтовых символов, потому что все использует 2 байта.

  • Браузеры не должны ждать тег <meta>, указывающий кодировку, прежде чем они смогут что-либо сделать. StackOverflow даже не имеет мета-тега, заставляя браузеры загружать всю страницу сначала, замедляя страницу отрисовка.
  • вы никогда не увидите ? и другие случайные символы на старых веб-страницах (например, вместо специальных [читай: ужасных] цитат Microsoft Word).

  • в UTF-8 может быть представлено больше символов.

  • Другие вещи, о которых я сейчас не могу думать.

Так почему же низшие кодировки не были сброшены из космоса?

563   5  

5 ответов:

  • даже не нужно думать о проблемах кодирования.

Верно. За исключением всех данных, которые все еще находятся в старом формате ASCII.

  • нет проблем со смешанной потоковой передачей 1-2-байтовых символов, потому что все использует 2 байта.

Неверно. UTF-8 имеет переменную длину, от 1 до 6 байт или около того.

  • браузеры не должны ждать тега, задающего кодировку, прежде чем они смогут что-либо сделать. Сайте StackOverflow не даже есть мета-тег, заставляющий браузеры сначала загружать всю страницу, замедляя рендеринг страницы.
Браузеры обычно не ждут полной страницы, они делают предположение, основанное на первой части данных страницы.
  • Ты никогда не увидишь ? и другие случайные символы на старых веб-страницах (например, вместо специальных [читай: ужасных] цитат Microsoft Word).

За исключением всех тех других старых веб-страниц, которые используют другие не-UTF-8 кодировки (неанглоговорящий мир довольно велик).

  • в UTF-8 может быть представлено больше символов.

Верно. Ваши проблемы с проверкой данных тоже только усложнились.

Почему ЭБКДИК, Бодо и морс до сих пор не сброшены с орбиты? Почему производители багги-Кнутов не закрыли свои двери на следующий день после того, как Готлиб Даймлер отправил свой первый автомобиль?

Перенос технологии в историю занимает ненулевое время.

Нет проблем со смешанными 1-2 байтами потоковый характер, потому что все использует 2 байта.

Совсем не так. UTF-8-это кодировка со смешанной шириной 1, 2, 3 и 4 байта. Возможно, вы подумали о UTF-16, но даже у него были 4-байтовые символы в течение некоторого времени. Если вам нужна" простая " кодировка с фиксированной шириной, вам понадобится UTF-32.

Ты никогда не увидишь ? и другие случайные символы на старых веб-страницах

Даже с веб-страницами UTF-8, вы все еще не можете иметь шрифт , который поддерживает каждый символ Юникода, так что это все еще проблема.

Дополнительные символы могут быть представлены в виде УТФ-8.

Иногда это является недостатком. Наличие большего количества символов означает, что для кодирования символов требуется больше битов. И следить за тем, какие из них буквы, цифры и т. д. И хранить шрифты для отображения этих символов. И иметь дело с дополнительными связанными с юникодом сложностями, такими как нормализация.

Это вероятно, это не проблема для современных компьютеров с гигабайтами оперативной памяти, но не ожидайте, что ваш TI-83 будет поддерживать Unicode в ближайшее время.


Но все же, если вам действительно нужны эти дополнительные символы, работать с UTF-8 намного проще, чем с миллионами различных 8-битных кодировок символов (плюс несколько несамосинхронизирующихся восточноазиатских многобайтовых кодировок).

Так почему же нет низших кодировок был сброшен ядерный заряд из космоса?

В в значительной степени это объясняется тем, что "низшие" языки программирования не были заброшены из космоса. Множество кода все еще написано на таких языках, как C и C++ (и даже COBOL!), которые предшествуют Unicode и до сих пор не имеют хорошей поддержки для него.

Я ужасно хочу, чтобы мы избавились от ситуации, когда некоторые библиотеки используют строки на основе char, закодированные в UTF-8, в то время как другие думают, что char для устаревших кодировок и Unicode всегда должен использовать wchar_t, а затем вы должны иметь дело с тем, является ли wchar_t UTF-16 или UTF-32 (или ни то, ни другое).

Я не думаю, что UTF-8 использует "2 бита", это переменная длина. Также много кода уровня ОС-UTF-16 и UTF-32 соответственно, что означает выбор между ASCII или ISO-8859-1 для латинских кодировок.

Ну, ваш вопрос-это немного жалоба на то, почему-мир-так-плох. Это потому, что так оно и есть. Страницы, написанные в других кодировках, чем UTF-8, происходят из тех времен, когда UTF-8 плохо поддерживалась операционными системами и когда UTF-8 еще не была стандартом де-факто.

Эти страницы будут оставаться в своей первоначальной кодировке до тех пор, пока кто-то не изменит их, что во многих случаях не очень вероятно. Многие из них уже никем не поддерживаются.

Есть также много документов с кодировка не в юникоде в интернете, во многих форматах. Кто-то мог бы их обратить, но это, как и выше, требует больших усилий.

Таким образом, поддержка не-unicode также должна остаться.

А в настоящее время придерживайтесь правила, что когда кто-то использует кодировку, отличную от unicode, котенок умирает.

Comments

    Ничего не найдено.