Почему кодировка ASCII и ISO-8859-1 не отошла в историю?
Мне кажется, что если бы UTF-8 была единственной кодировкой, используемой повсеместно, было бы намного меньше проблем с кодом:
- даже не нужно думать о проблемах кодирования.
- Нет проблем со смешанной потоковой передачей 1-2-байтовых символов, потому что все использует 2 байта.
- вы никогда не увидите
?и другие случайные символы на старых веб-страницах (например, вместо специальных [читай: ужасных] цитат Microsoft Word). - в UTF-8 может быть представлено больше символов.
Браузеры не должны ждать тег
<meta>, указывающий кодировку, прежде чем они смогут что-либо сделать. StackOverflow даже не имеет мета-тега, заставляя браузеры загружать всю страницу сначала, замедляя страницу отрисовка.Другие вещи, о которых я сейчас не могу думать.
Так почему же низшие кодировки не были сброшены из космоса?
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_tUTF-16 или UTF-32 (или ни то, ни другое).
Я не думаю, что UTF-8 использует "2 бита", это переменная длина. Также много кода уровня ОС-UTF-16 и UTF-32 соответственно, что означает выбор между ASCII или ISO-8859-1 для латинских кодировок.
Ну, ваш вопрос-это немного жалоба на то, почему-мир-так-плох. Это потому, что так оно и есть. Страницы, написанные в других кодировках, чем UTF-8, происходят из тех времен, когда UTF-8 плохо поддерживалась операционными системами и когда UTF-8 еще не была стандартом де-факто.
Эти страницы будут оставаться в своей первоначальной кодировке до тех пор, пока кто-то не изменит их, что во многих случаях не очень вероятно. Многие из них уже никем не поддерживаются.
Есть также много документов с кодировка не в юникоде в интернете, во многих форматах. Кто-то мог бы их обратить, но это, как и выше, требует больших усилий.
Таким образом, поддержка не-unicode также должна остаться.
А в настоящее время придерживайтесь правила, что когда кто-то использует кодировку, отличную от unicode, котенок умирает.
Comments