Почему не определены символы для значений 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).