Command Palette

Search for a command to run...

Таблица ASCII: Полное руководство по кодам символов (0255)

Таблица ASCII: Полное руководство по кодам символов (0255)

T
Toolz Team
|Aug 23, 2026|15 Мин. читать

Часть коллекции бинарный и гекс

В первый раз, когда ASCII действительно имел для меня значение, я отлаживал импорт CSV для плагина WordPress, который продолжал разделять один адрес клиента и #39;s на две строки. Файл выглядел хорошо в каждом редакторе, в котором я его открыл. Оказалось, что в одном экспорте использовался возврат с голой кареткой (код 13) в качестве строки, заканчивающейся, в то время как мой парсер ожидал линейного канала (код 10), а разделитель случайных записей (код 30) заполз из экспорта мэйнфреймов вверх по течению. Ни один из этих символов ничего не печатает. Вы не можете их увидеть. Вы можете увидеть их только в том случае, если у вас есть таблица, которая превращает невидимый байт в число и имя - именно поэтому я построил этот файл АСКИИ на Toolz.dev и почему я держу его закрепленным на вкладке браузера.

TL;DR: ASCII сопоставляет каждый базовый английский символ и набор управляющих сигналов с числами 0127; расширенные наборы, такие как ISO 8859-1 (лат.1), заполняют 128255. Заглавная буква A составляет 65 лет, строчные буквы a это 97, пробел равен 32, а "невидимый" коды 0 —31 - это управляющие символы, такие как вкладка (9), лента строк (10) и возврат каретки (13).Если вы можете прочитать таблицу, вы можете декодировать практически любую ошибку кодирования текста, безопасно уйти от любого символа в HTML и понять, почему UTF-8, JSON и каждый язык программирования ведут себя так же, как со строками.

Я & #39; потратил годы на создание вещей, которые живут и умирают при обработке текста - плагин администратора WordPress, API-интерфейсы Laravel, интерфейсы React - и я могу сказать вам, что работающая ментальная модель ASCII экономит больше часов отладки, чем почти любой другой фрагмент знаний низкого уровня. Это руководство - это версия, которую я хотел бы, чтобы кто-то вручил мне раньше.

Что такое ASCII и почему он все еще имеет значение?

ASCII означает Американский стандартный код обмена информацией. Впервые он был стандартизирован в 1963 году и преобразован в форму, которую мы до сих пор используем как ANSI X3.4-1986 (также опубликованную на международном уровне как ISO/IEC 646), а определение сети, цитируемое до сих пор, таково РФК 20 (1969).В основе своей это таблица поиска: отображение чисел от 0 до 127 на определенный набор символов и управляющих сигналов. семь бит, 128 слотов, одно соглашение, которое мог бы разделить весь вычислительный мир.

Это соглашение является причиной того, что текстовый файл, написанный на сервере Linux в 1990 году, до сих пор правильно открывается на ноутбуке Mac. До появления стандартных кодов символов у каждого производителя была своя собственная схема, и перемещение текста между машинами было проблемой перевода. ASCII исправил нижние 128 кодов на месте, и с тех пор он ни разу не перемещался.

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

Как организована таблица ASCII?

128 стандартных кодов делятся на несколько естественных групп, и знание группы часто более полезно, чем запоминание какого-либо отдельного значения.

Управляющие символы (0 — 31 и 127). Это непечатающие коды. они несут инструкции, а не глифы: null (0), bell (7), backspace (8), горизонтальная вкладка (9), линейный канал (10), возврат каретки (13), escape (27), и delete (127) - это те, с которыми вы и #39;ll действительно встречаетесь. Они были разработаны для управления телетайпными машинами, и их призраки по-прежнему запускают все: от окончаний строк в ваших исходных файлах до escape-последовательностей, которые окрашивают вывод вашего терминала.

Печатные знаки препинания и символы (32 北47, 58 北64, 91 — 96, 12 3126). Пространство равно 32 - самый низкий печатный код, и технически печатный символ, даже если он ничего не показывает Остальные символы разбросаны вокруг вашей клавиатуры: ! 33 года, @ 64 года, ~ составляет 126.

Цифры (4857). Персонажи 0 через 9 сидите аккуратно бегите от 48 до 57. Этот порядок является преднамеренным: вычтите 48 из кода цифры и #39;s и вы получите его числовое значение, которое почти каждый & quot;разберите число из строки и квоты; рутина начинается.

Надбуквенные буквы (65 — 90) и строчные буквы (97 — 122). A 65 лет, Z составляет 90; a 97 лет, z составляет 122. Разрыв между буквой и #39;s прописной и строчной формой всегда ровно 32.

Расширенный ареал (128 北55) - другое животное, и it's, где живет большая часть путаницы - поэтому ниже он получает свой раздел.

В чем разница между ASCII и расширенным ASCII?

Стандартный ASCII определяет только 128 кодов, потому что он использует только семь бит. Но компьютеры хранят текст в восьмибитных байтах, что оставляет целых лишних 128 слотов (128255) неиспользуемыми стандартом. & quot;Extended ASCII" является общим термином для различных схем, которые заполняют эти слоты.

Загвоздка - и it's большой - в том, что нет ни одного расширенного ASCII. Различные кодовые страницы назначают верхние 128 кодов совершенно по-разному. IBM's кодовая страница 437 помещает туда символы рисования коробок. Windows-1252 помещает туда вьющиеся кавычки и знак евро. ISO/IEC 8859-1, известный как Latin-1, помещает туда акцентированные западноевропейские буквы. байт со значением 233 é на латыни-1, но совсем на кодовой странице 437.

На Toolz.dev я показываю назначение ISO 8859-1 (лат.1) для кодов 160 ww.55, потому что это реальный опубликованный стандарт и он является основой исходного набора символов HTML - что означает, что именованные объекты HTML выстраиваются в линию. Коды 128159 в лат.-1 являются вторым блоком управляющих символов (контроль & quot;C1 & quot;), поэтому инструмент помечает их как таковые, а не притворяется, что они & #39;re printable.

Практический урок: когда кто-то говорит & quot;расширенный ASCII, & quot; всегда спрашивайте который. Несоответствующая кодовая страница является классической причиной é моджибаке вы видите, когда файл UTF-8 читается как Latin-1, или недостающие глифы, когда происходит обратное. Понимание конфиденциальность данных и то, как инструменты обрабатывают ваш текст это одна проблема; Понимание того, как байты сопоставляются с символами, - это вторая половина того, что вы никогда больше не удивляетесь искаженному тексту.

Почему прописная и строчная строка отличаются ровно на 32?

Это моя любимая часть дизайна ASCII, потому что it's не случайность - it's инженерное. макет был выбран так, чтобы прописная и строчная формы буквы 's отличались только битом 5, который имеет значение 32. A 65 (двоичный 01000001); a это 97 (бинарный 01100001). Единственная разница в том, что один бит.

Это решение означает, что программа может изменить регистр с помощью одной побитовой операции вместо таблицы поиска. Чтобы заглавными буквами, очистите бит 5 (code & ~32); чтобы занизить верхний регистр, установите его (code | 32); чтобы поменять футляр в любом случае, переверните его (code ^ 32). Десятилетия строковых библиотек были построены на этом трюке до Unicode's более сложные правила случая сделали его небезопасным для чего-либо, кроме простого ASCII. Когда вы просматриваете таблицу и замечаете, что каждая заглавная буква находится ровно на 32 ниже ее строчного двойника, вы' смотрите на решение, принятое в 1960-х годах, которое до сих пор формирует то, как пишется программное обеспечение.

Как мне преобразовать символы, десятичные, шестнадцатеричные и двоичные?

Каждый код ASCII имеет четыре общих представления, и перемещение между ними является рутинной частью работы низкого уровня. Здесь's как они соотносятся для письма H,

Представительство Ценность за H Где вы и #39; увидим это
характер H обычный текст
десятичный 72 String.fromCharCode(72), chr(72)
шестнадцатеричный 48 Шестнадцатеричные свалки, \x48, URL/процент кодировки
восьмигранный 110 Старые инструменты Unix, \110 побеги
бинарный 01001000 Побитовые операции, проектирование протоколов

Чтобы произнести слово из гекса, возьмите каждую пару шестнадцатеричных цифр за один байт: 48 69 это 72 105 в десятичном формате, что соответствует Hi. Чтобы пойти другим путем, найдите каждый символ и код #39;s. The АСКИИ выполняет оба направления - показывает все пять столбцов для каждого кода, а его поле поиска принимает символ, десятичное число, шестнадцатеричное значение (с или без a 0x префикс), восьмеричная или двоичная строка или даже имя объекта HTML, поэтому ввод &, 38, или amp все прыгают к амперсанду.

Если вы ' регулярно конвертируете целые строки или работаете по базам чисел за пределами ASCII, бинарный переводчик и тот Конвертер базы номеров являются ли сопутствующие инструменты, к которым я обращаюсь. Таблица ASCII является справочной; эти два являются рабочими скамейками.

Для чего на самом деле нужны управляющие символы ASCII?

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

Линейная подача (10) и возврат каретки (13) являются большой два. на телетайпе, каретка возврат переместил головку печати обратно в левый край и линия подачи продвинул бумагу одну строку - два отдельных физических действия, Это наследие является почему Windows текстовые файлы заканчивают строки с обоими (CRLF, 13, затем 10), в то время как Unix и macOS используют только линейный канал (LF, 10). Почти каждый & quot; почему мой файл полон ^M персонажи?" следы ошибок восходят к этому расколу. Моя катастрофа CSV из вступления была именно такой.

Горизонтальная вкладка (9) является символом табуляции - одним байтом, который редакторы отображают как несколько пробелов. Нулевая (0) завершает строки на C и отмечает & quot;no data& quot; в бесчисленных форматах. Побег (27) представляет управляющие последовательности, которые перемещают курсор и окрашивают терминал. Колокол (7) однажды позвонил настоящий звонок; теперь он подает звуковой сигнал или мигает окном терминала.

Причина, по которой хорошая таблица называет эти коды, имеет значение: когда вы обнаруживаете байт 27, сидящий в ваших данных, & quot;ESC - Escape" мгновенно сообщает вам, что вы & #39; смотрите на последовательность управления терминалом, а не на поврежденный текст. необработанное число заставит вас угадать.

Как ASCII связан с объектами HTML и безопасным побегом?

Если вы пишете для Интернета - и строите надежный инструментарий для разработчиков значит, вы это сделаете - горстке символов ASCII необходимо сбежать, чтобы браузер сделал это &#39;t неправильно прочитал их как разметку. Знак "меньше" < (60), больше > (62), амперсанд & (38) и двойная цитата " (34) - это опасные четыре. Оставленные необработанными внутри HTML, они могут сломать вашу страницу или открыть отверстие для инъекции; записано как сущности (&lt;, &gt;, &amp;, &quot;) они отображаются как буквальные символы.

Каждый код также имеет числовой объект HTML в форме &#code;таким образом, даже символ без именованного объекта всегда может быть безопасно записан. в таблице ASCII указан именованный объект, где он существует, и числовая форма в противном случае, а щелчок по столбцу HTML копирует его прямо в буфер обмена. когда вам нужно закодировать или декодировать целый блок разметки, а не искать один символ, HTML-объект инструмент выполняет пакетное задание. Для более глубокого изучения утилит кодирования, которые я использую изо дня в день, Руководство по инструментам кодирования проходит через весь набор.

Является ли таблица ASCII такой же, как юникод?

Нет, но они&#39; намеренно совместимы, и отношения стоит прояснить. Unicode - это гораздо более крупный стандарт - более миллиона возможных кодовых точек, охватывающих каждую систему записи, а также символы и смайлики. ASCII с его 128 кодами - это крошечное подмножество. Что заставляет их хорошо играть вместе, так это то, что Unicode&#39; первые 128 кодовых точек определены как идентичные ASCII, а UTF-8 кодирует именно эти 128 как отдельные байты с их значениями ASCII.

Следствие элегантно: любой действительный файл ASCII автоматически является действительным файлом UTF-8. Вам никогда не нужно конвертировать простой английский текст между ними. В тот момент, когда вы выходите за пределы кода 127 - букву с акцентом, вьющуюся цитату, эмодзи - вы оставляете ASCII позади и вы &#39; твердо находитесь на многобайтовой территории Unicode, где один символ может занимать два, три или четыре байта. таблица ASCII Toolz.dev охватывает диапазоны ASCII и Latin-1 напрямую, и ее текстовый кодер сообщает о кодовой точке Unicode для любого символа, который вы вставляете за их пределы, так что вы можете точно видеть, где заканчивается ASCII и занимает Unicode.

Часто задаваемые вопросы

Что такое ASCII?

ASCII (американский стандартный код для обмена информацией) — это стандарт кодирования символов, который отображает буквы, цифры, пунктуацию и управляющие сигналы на цифры 0–127. Он был стандартизирован как ANSI X3.4 в 1963 году и остается основой современных кодировок текста, включая UTF-8, чьи первые 128 кодовых точек идентичны ASCII.

Каково значение ASCII & quot;A & quot;?

Заглавная буква & quot;A & quot; имеет значение ASCII 65 (шестнадцатеричное число 41, восьмеричное число 101, двоичное число 01000001). Строчная буква & quot;a & quot; на 97 - ровно на 32 выше - именно поэтому перелистывание бита 5 переключает букву между прописной и строчной.

В чем разница между ASCII и расширенным ASCII?

Стандартный ASCII использует 7 бит и определяет 128 кодов (0127). &quot;Extended ASCII&quot; использует восьмой бит для добавления еще 128 кодов (128 — 255) для букв с акцентом, символов и символов рисования коробок. не существует единого расширенного ASCII - разные кодовые страницы назначают верхнюю половину по-разному. В этой таблице показано назначение ISO 8859-1 (латинский-1), основа набора символов HTML латинского языка-1.

Что такое символы управления ASCII?

Коды 0–31 и 127 — это непечатные управляющие символы, которые несут инструкции, а не видимые глифы. Обычные включают ленту (10), возврат каретки (13), горизонтальную язычок (9), выход (27) и нулевую (0). Первоначально они контролировали телетайпные машины и по-прежнему завершают линии, разделительные поля и последовательности управления терминалом.

Как преобразовать hex в ascii?

Каждая пара шестнадцатеричных цифр представляет один байт, который отображается в один код ASCII. Hex 48 равен 72 в десятичном формате, что является & quot;H & quot;; шестнадцатеричный 69 равен 105, что является & quot;i & quot; - так 48 69 заклинаний & quot;Hi & quot;. Поиск в таблице ASCII по значению шестнадцатеричного числа (с префиксом 0x или без него), чтобы мгновенно найти совпадающий символ.

Почему верхний регистр отличается от строчной на 32 на ASCII?

ASCII был составлен таким образом, что единственная разница между буквой и #39;s прописной и строчной формами равна биту 5 (значение 32). &quot;A&quot; равно 65 и &quot;a&quot; равно 97; &quot;Z&quot; равно 90 и &quot;z&quot; равно 122. Этот продуманный дизайн позволяет программам менять случай с помощью одной поразрядной операции, а не таблицы поиска.

Является ли таблица ASCII такой же, как юникод?

Не то же самое, но совместимо. Unicode - это гораздо больший стандарт, охватывающий более миллиона кодовых точек в каждой системе записи. Его первые 128 кодовых точек идентичны ASCII, а UTF-8 кодирует их как одиночные байты, поэтому действительный текст ASCII также действителен UTF-8. Таблица ASCII охватывает диапазоны ASCII и Latin-1; его кодер сообщает о кодовых точках Unicode для символов за их пределами.

Является ли мой текст конфиденциальным, когда я использую таблицу ASCII?

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


Написано Liton, строителем [Toolz.dev](/, WP Adminify, и длинной линейки проектов Laravel и React, которые все, рано или поздно, сводились к правильному получению байтов.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!