Почему кодирование ASCII и ISO-8859-1 не было перенесено в историю? - PullRequest
3 голосов
/ 02 сентября 2010

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

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

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

Ответы [ 5 ]

9 голосов
/ 02 сентября 2010
  • Даже не нужно думать о проблемах кодирования.

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

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

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

  • Браузерам не нужно ждать тега, задающего кодировку, прежде чем они смогут что-либо сделать. StackOverflow даже не имеет метатега, поэтому браузеры сначала загружают полную страницу, что замедляет рендеринг страницы.

Браузеры обычно не ждут полной страницы, они делают предположение на основании первой части данных страницы.

  • Вы бы никогда не увидели? и другие случайные символы на старых веб-страницах (например, вместо специальных цитат [читать: ужасно] в Microsoft Word).

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

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

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

6 голосов
/ 02 сентября 2010

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

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

1 голос
/ 03 сентября 2010

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

Не совсем так. UTF-8 представляет собой кодирование со смешанной шириной 1, 2, 3 и 4 байта. Возможно, вы думали о UTF-16, но даже в нем некоторое время были 4-байтовые символы. Если вы хотите & ldquo; простой & rdquo; кодировка фиксированной ширины, вам нужен UTF-32.

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

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

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

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

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


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

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

По большей части это связано с тем, что & ldquo; низший & rdquo; Языки программирования не были обстреляны из космоса. Много кода все еще написано на таких языках, как C и C ++ (и даже на COBOL!), Которые предшествовали Unicode и до сих пор не имеют хорошей поддержки для него.

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

0 голосов
/ 20 июня 2012

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

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

В Интернете также есть много документов с кодировкой не-Unicode, во многих форматах.Кто-то МОЖЕТ конвертировать их, но это, как указано выше, требует больших усилий.

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

И на текущий момент оставьте какправило, что когда кто-то использует не-Unicode-кодировку, котенок умирает.

0 голосов
/ 02 сентября 2010

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

...