Почему не определены символы для значений ascii от 127 до 159

Я искал × в диаграмме ASCII и заметил, что с 127 по 159 нет символов, определенных на диаграмме (not defined in HTML 4 standard), хотя коды после этого имеют символы в таблице.

Есть ли конкретная техническая причина отсутствия символов в этом диапазоне номеров?

2 ответа

Решение

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

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

Хотя неясно, было ли это первоначальным намерением разработчиков ASCII, но ограничение ASCII значениями 127 или менее (десятичными) позволило создавать более новые кодировки символов, такие как UTF-8 и Unicode, которые поддерживают более миллиона символов, в то время как также будучи ВЗАИМНЫМ СОВМЕСТИМ с ASCII.

Эти новые схемы кодирования делают это с помощью переменной ширины: если первый бит в байте равен '0', байт обрабатывается как символ ASCII. Если первый байт равен "1", он рассматривается как часть многобайтового символа. Более подробная информация о UTF-8 доступна здесь.

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

Больше символов очень важно, потому что даже 8 бит (256 символов) или полный байт недостаточно для представления всех символов на всех языках, которые интересуют людей, особенно потому, что в таких языках, как китайский и японский, есть тысячи символов. Даже 2 байта не охватывают такие языки, как китайский и японский.

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

Другое преимущество схем многобайтового кодирования по сравнению с подходом, который выделяет фиксированное количество, скажем, 3 или 4 байта на символ (которое необходимо для поддержки японского и китайского языков, так как 2 байта недостаточно), это то, что с фиксированным кодированием вы значительно увеличите требования к хранению для простого текста (то есть текста, который может ASCII или 1 байт на символ), поскольку теперь каждый символ составляет 3 или 4 байта вместо 1.

Схема кодирования с фиксированной шириной (например, 3 или 4 байта на символ) также не будет обратно совместима с ASCII.

Поэтому не критикуйте ASCII за то, что он не использует все 8-битные биты или не поддерживает до 256 символов, но хвалите его за расширяемость, чтобы у нас был genie emoji ‍♂️. Да, многие / большинство смайликов являются официальными персонажами UTF-8 и Unicode - но устройства и шрифты должны создавать для них графику, которая отстает от фактического создания смайликов в качестве официального персонажа, поэтому новые смайлики, такие как Llamas, недоступны на Mac (пока), но доступны на iOS.

Эта числовая кодировка HTML соответствует кодировке Latin1, а Latin1 не содержит символов в этом диапазоне. Поэтому в HTML нет символов в этом диапазоне. Никаких дальнейших "технических" причин не требуется.

Причина, по которой эти коды не определяют видимые символы в Latin1, более сложна. Пространство зарезервировано для управляющих кодов C1 (0x80 в 0x9F), которые являются (очень) старыми командами форматирования терминала. По назначению они аналогичны контрольным кодам C0 (0x00 в 0x1F), который также используется для определения функций, таких как "Вертикальная табуляция", "Подтверждение" и "Звонок", которые устарели и перестали использоваться, за исключением табуляции, возврата каретки и перевода строки (и, возможно, Backspace).

Другие вопросы по тегам