ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].
ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной кодовой таблицы (например КОИ-8).
Содержание
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
Примечание: в старых шрифтах апостроф ‘ рисовался с наклоном влево, а тильда
была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху.
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
Примечание: это используется, например, в справочной системе man.
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на месте @ [ \ ] ^ `
. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.
Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления локализированных символов, букв местного языка. Отсутствие единого стандарта размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками (КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия нескольких разных кодировок.
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
Кодировка
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
1.
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
2.
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
3.
0
1
2
3
4
5
6
7
8
9
:
;
?
4.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6.
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7.
p
q
r
s
t
u
v
w
x
y
z
<
|
>
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.
Управляющие символы
Поскольку ASCII изначально предназначался для обмена информацией (по телетайпу), в нём, кроме информационных символов, используются символы-команды для управления связью. Это обычный набор спецсигналов, применявшийся и в других докомпьютерных средствах обмена сообщениями (азбука Морзе, семафорная азбука), дополненный с учётом специфики устройства.
(После названия каждого символа указан его 16-ричный код)
Структурные свойства таблицы
Представление ASCII в ЭВМ
На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.
На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1] :
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOM
EOA
EOM
EQT
WRU
RU
BELL
BKSP
HT
LF
VT
FF
CR
SO
SI
1.
DC0
DC1
DC2
DC3
DC4
ERR
SYNC
LEM
S0
S1
S2
S3
S4
S5
S6
S7
2.
3.
4.
BLANK
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
5.
0
1
2
3
4
5
6
7
8
9
:
;
?
6.
7.
8.
9.
A.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
B.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
↑
←
C.
D.
E.
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
F.
p
q
r
s
t
u
v
w
x
y
z
ESC
DEL
На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.
ASCII-коды используются также для определения нажатой клавиши при программировании. Для стандартной QWERTY-клавиатуры таблица кодов выглядит следующим образом:
ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].
ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной кодовой таблицы (например КОИ-8 ).
Содержание
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
Примечание: в старых шрифтах апостроф ‘ рисовался с наклоном влево, а тильда
была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху.
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на месте @ [ \ ] ^ `
. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
Кодировка
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
1.
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
2.
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
3.
0
1
2
3
4
5
6
7
8
9
:
;
?
4.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6.
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7.
p
q
r
s
t
u
v
w
x
y
z
<
|
>
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса ) и нижнюю черту ( подчёркивание ) соответственно.
Управляющие символы
(После названия каждого символа указан его 16-ричный код)
Структурные свойства таблицы
Представление ASCII в ЭВМ
На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOM
EOA
EOM
EQT
WRU
RU
BELL
BKSP
HT
LF
VT
FF
CR
SO
SI
1.
DC0
DC1
DC2
DC3
DC4
ERR
SYNC
LEM
S0
S1
S2
S3
S4
S5
S6
S7
2.
3.
4.
BLANK
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
5.
0
1
2
3
4
5
6
7
8
9
:
;
?
6.
7.
8.
9.
A.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
B.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
↑
←
C.
D.
E.
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
F.
p
q
r
s
t
u
v
w
x
y
z
ESC
DEL
На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.
ASCII-коды используются также для определения нажатой клавиши при программировании. Для стандартной QWERTY-клавиатуры таблица кодов выглядит следующим образом:
Кодировка символов (часто называемая также кодовой страницей ) – это набор числовых значений, которые ставятся в соответствие группе алфавитно-цифровых символов, знаков пунктуации и специальных символов.
Для кодировки символов в Windows используется таблица ASCII (American Standard Code for Interchange of Information).
В ASCII первые 128 символов всех кодовых страниц состоят из базовой таблицы символов. Первые 32 кода базовой таблицы, начиная с нулевого, размещают управляющие коды.
Символ
Код
Клавиши
Значение
nul
0
Ctrl + @
Нуль
soh
1
Ctrl + A
Начало заголовка
stx
2
Ctrl + B
Начало текста
etx
3
Ctrl + C
Конец текста
eot
4
Ctrl + D
Конец передачи
enq
5
Ctrl + E
Запрос
ack
6
Ctrl + F
Подтверждение
bel
7
Ctrl + G
Сигнал (звонок)
bs
8
Ctrl + H
Забой (шаг назад)
ht
9
Ctrl + I
Горизонтальная табуляция
lf
10
Ctrl + J
Перевод строки
vt
11
Ctrl + K
Вертикальная табуляция
ff
12
Ctrl + L
Новая страница
cr
13
Ctrl + M
Возврат каретки
so
14
Ctrl + N
Выключить сдвиг
si
15
Ctrl + O
Включить сдвиг
dle
16
Ctrl + P
Ключ связи данных
dc1
17
Ctrl + Q
Управление устройством 1
dc2
18
Ctrl + R
Управление устройством 2
dc3
19
Ctrl + S
Управление устройством 3
dc4
20
Ctrl + T
Управление устройством 4
nak
21
Ctrl + U
Отрицательное подтверждение
syn
22
Ctrl + V
Синхронизация
etb
23
Ctrl + W
Конец передаваемого блока
can
24
Ctrl + X
Отказ
em
25
Ctrl + Y
Конец среды
sub
26
Ctrl + Z
Замена
esc
27
Ctrl + [
Ключ
fs
28
Ctrl + \
Разделитель файлов
gs
29
Ctrl + ]
Разделитель группы
rs
30
Ctrl + ^
Разделитель записей
us
31
Ctrl + _
Разделитель модулей
Базовая таблица кодировки ASCII
Символы с номерами от 128 до 255 представляют собой таблицу расширения и варьируются в зависимости от набора скриптов, представленных кодировкой символов. Набор символов таблицы расширения различается в зависимости от выбранной кодовой страницы:
Юникод (Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода».
В Unicode используются 16-битовые (2-байтовые) коды, что позволяет представить 65536 символов.
Применение стандарта Unicode позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, при этом становится ненужным переключение кодовых страниц.
Тип кодировки задается в свойствах проекта Microsoft Visual Studio: Многобайтовая кодировка предполагает использование кодировки ASCII. При этом при построении проекта используется директива условной компиляции, переопределяющая тип TCHAR :
Для перекодирования строки в формат Unicode без изменения кодировки файла используется макроопределение _T(«строка»)