Миниреферат на тему:
Таблицы кодировок.
Помимо цифр, на мониторы ЭВМ необходимо
выводить еще и множество символов. Ясно, что для вывода каждого символа
необходим некий машинный код, однозначно соответствующий этому символу, или
некое правило, по которому можно организовать корректный вывод каждого символа
на дисплей. Разумеется, разрабатывать такую систему ввода-вывода следует
оптимальным образом с точки зрения потребления ресурсов компьютера. Особенно
важно в этом случае помнить о том, что производительность компьютеров в
отдаленные времена зарождения вычислительной техники была ничтожной, с
современных позиций, а системные программисты и разработчики аппаратной части
боролись за каждый бит, адрес, инструкцию, регистр, освобождая оперативную
память и адресное пространство компьютерных "малышей".
Исторически сложилось так, что первые
разработчики компьютеров были носителями английского языка. Что им было
необходимо обеспечить для вывода на монитор? Во-первых, 26 букв английского
алфавита (строчных), во-вторых, 26 прописных, 9 знаков препинания (. , : !
" ; ? ( ) ), пробел, 10 цифр, 5 знаков арифметических действий (+,-,*, /,
^) и специальные символы (№ % _ # $, и так далее ^, &, >, <, |, \).
Получается чуть больше сотни символов. Такой сравнительно небольшой базовый
набор символов можно закодировать при помощи таблиц соответствия этого набора
машинным кодам (фактически, двоичным числам).
Можно вполне
ограничиться набором двоичных чисел от0 до27 (всего 128 позиций), что и было сделано. Таблица соответствия получила название ASCII (American Standard Code for Information Interchange). В рамках таблицы ASCII создание многоязычных документов
являлось очень проблематичной, а в большинстве случаев и совершенно
невыполнимой задачей.
Рассмотрим структуру
таблицыASCII. Для удобства символы в ней пронумерованы
в шестнадцатеричной системе счисления от 0 - 7F. Первые знакоместа в таблице занимают непечатаемые символы (0 до 7F), затем следуют
печатаемые символы (20 - 7F).
ТАБЛИЦА ASCII
непечатаемые символы
Команда
|
Значение
|
|
0
|
NUL
|
NULL
|
1
|
SOH
|
Start of Heading
|
2
|
STX
|
Start of Text
|
3
|
ETX
|
End of TeXt
|
4
|
EOT
|
End Of Transmission
|
5
|
ENQ
|
ENQurity
|
6
|
ACK
|
ACKnolidgement
|
7
|
BEL
|
BELl
|
8
|
BS
|
Back Space
|
9
|
HT
|
Horizontal Tab
|
A
|
LF
|
Line Feed
|
B
|
VT
|
Vertical Tab
|
C
|
FF
|
From Feed
|
D
|
CR
|
Carriage Return
|
E
|
SO
|
Shift Out
|
F
|
Si
|
Shift In
|
10
|
DLE
|
Data Link Escape
|
11
|
DC1
|
Device Control 1
|
12
|
DC2
|
Device Control 2
|
13
|
DC3
|
Device Control 3
|
14
|
DC4
|
Device Control 4
|
15
|
NAK
|
Negative ACKnolidgement
|
16
|
SYN
|
SYNcronous idle
|
17
|
ETB
|
End of Transmission Block
|
18
|
CAN
|
CANcel
|
19
|
EM
|
End of Medium
|
1A
|
SUB
|
SUBstitude
|
1B
|
ESC
|
ESCape
|
1C
|
FS
|
File Separator
|
1D
|
GS
|
Groupe Separator
|
1E
|
RS
|
Record Separator
|
1F
|
DC1
|
Unit Separator
|
печатаемые символы
Символ
|
Число
|
Символ
|
Число
|
Символ
|
Число
|
Символ
|
Число
|
Символ
|
Число
|
Символ
|
|
20
|
пробел
|
30
|
.
|
40
|
@
|
50
|
P
|
60
|
'
|
70
|
p
|
21
|
!
|
31
|
0
|
41
|
A
|
51
|
Q
|
61
|
a
|
71
|
q
|
22
|
"
|
32
|
1
|
42
|
B
|
52
|
R
|
62
|
b
|
72
|
r
|
23
|
#
|
33
|
2
|
43
|
C
|
53
|
S
|
63
|
c
|
73
|
s
|
24
|
$
|
34
|
3
|
44
|
D
|
54
|
T
|
64
|
d
|
74
|
t
|
25
|
%
|
35
|
4
|
45
|
E
|
55
|
U
|
65
|
e
|
75
|
u
|
26
|
&
|
36
|
5
|
46
|
F
|
56
|
V
|
66
|
f
|
76
|
v
|
27
|
'
|
37
|
6
|
47
|
G
|
57
|
W
|
67
|
g
|
77
|
w
|
28
|
(
|
38
|
7
|
48
|
H
|
58
|
X
|
68
|
h
|
78
|
x
|
29
|
)
|
39
|
8
|
49
|
I
|
59
|
Y
|
69
|
i
|
79
|
y
|
2A
|
*
|
3A
|
9
|
4A
|
J
|
5A
|
Z
|
6A
|
j
|
7A
|
z
|
2B
|
+
|
3B
|
:
|
4B
|
K
|
5B
|
[
|
6B
|
k
|
7B
|
{
|
2C
|
,
|
3C
|
;
|
4C
|
L
|
5C
|
\
|
6C
|
l
|
7C
|
|
|
2D
|
-
|
3D
|
<
|
4D
|
M
|
5D
|
]
|
6D
|
m
|
7D
|
}
|
2E
|
.
|
3E
|
>
|
4E
|
N
|
5E
|
^
|
6E
|
n
|
7E
|
~
|
2F
|
/
|
3F
|
?
|
4F
|
O
|
5F
|
_
|
6F
|
o
|
7F
|
DEL
|
Однако базового набора кодов стало быстро
не хватать. Возросший дефицит знакомест в стандартной таблице ASCII потребовал ее немедленного расширения. В результате возникла новая
таблица кодировок, получившая название "расширенная таблица
ASCII", число знакомест в которой возросло до 28 (256 знакомест).
Эта таблица получила название международного стандарта IS 646, а восьмибитный
код -Latin-1. В него были добавлены в основном
латинские буквы со штрихами и диакритические символы. Вскоре появился новый
стандарт IS 8859, в котором вводилось понятие "кодовая страница",
т.е. набор из 256 символов для определения языка или группы языков, т.е. IS
8859-1 это Latin-1, IS 8859-2 включал славянские языки с
латинским алфавитом (чешский, польский, вергерский), IS 8859-3 включал
турецкий, мальтийский, эсперанто, галисийский языки, и т.д. Недостатком такого
подхода является то, что программное обеспечение должно следить за кодовыми
страницами, смешивать языки при этом невозможно, кроме того не были созданы
кодовые страницы японского и китайского языков.
UNICODE
В январе 1991 года возник консорциум
UNICODE (Unicode
Consortium), целью которого является продвижение, развитие и реализация стандарта
Unicode как международной системы кодирования для обмена информацией, а также
поддержание качества этого стандарта в будущих версиях.
Стандарт UNICODE 4.0 представляет собой
новую систему кодирования символов, выводимых на экран монитора или на принтер,
позволяющую закодировать 1 114 112 символов (в стандарте из принято называть
code points). Большинство символов, используемых в основных языках мира
занимают 65 536 code points, образуя Basic Multilingual Plane (BMP) (Основной
Многоязычный Уровень - мой перевод). Оставшиеся (более миллиона) code points
вполне достаточно для кодирования всех известных символов, включая
малораспространенные языки и исторические знаки. Стандарт UNICODE поддерживается
тремя формами, 32-битной (UTF-32), 16-битной (UTF-16) и 8-битной (UTF-8).
Восьмибитная форма UTF-8 была разработана для удобной совместимости с
ASCII-ориентироваными системами кодирования. Стандарт UNICODE совместим с
Международным стандартом International Standard ISO/IEC 10646.
Наиболее просто устроена форма UTF-32. В
ней каждый символ закодирован при помощи 32-битного блока. Благодаря этому
каждый символ UTF-32 обладает однозначным соответствием между декодированным
символом и блоком кода. Это форма имеет фиксированную длину знакоместа. Она
покрывает все кодовое пространство UNICODE -0...10FFFF16. Это гарантирует
полную совместимость с UTF-16 и UTF-8. Форма UTF-32 является наиболее
предпочитаемой для большинства UNIX платформ.
Стандарт UNICODE содержит 96 382 символа,
взятых их мировых шрифтов. Этих символов более чем достатонно для общения на
всех известных языках мира, а также для написания классических (исторических )
шрифтов многих языков. UNICODE всключает в себя шрифты европейских алфавитов,
средне-азиатское письмо, направленное справа на лево, шрифты Азии, и многие
другие. Подмножество символов (code points) HUN включает 70 207 идеографических
символов определяемых по национальным и промышленным стандартам Китая, Японии,
Кореи, Тайвани, Вьетнама и Сингапура. Более того, UNICODE содержит знаки
пунктуации, математические символы, технические символы, герметрические фотмы и
графические метки (dingbats), фонетические знаки.
Ниже приведена сравнительная таблица кодов
ASCII и UNICODE, взятая из Фрагмента
спецификации UNICODE 4.0 (Unicode Standard, Version 4.0), размещенного на сайте
Unicode Consortium.
Кодовая таблица для кириллицы приведена на
следующем рисунке (взято из Фрагмента специификации UNICODE 4.0 (Unicode
Standard, Version 4.0), размещенного на сайте Unicode Consortium.
Кодировка Windows-1251
(синоним CP1251)
— набор символов и кодировка,
являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Была создана на базе
кодировок, использовавшихся в ранних «самопальных» русификаторах Windows в1990—1991 гг. совместно представителями «Параграфа», «Диалога» и российского отделения Microsoft. Первоначальный вариант кодировки сильно отличался от представленного ниже
в таблице (в частности, там было значительное число «белых пятен»).
Windows-1251 выгодно отличается от других
8‑битных кириллических кодировок (таких как CP866,KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только значок
ударения); она также содержит все символы для
близких к русскому языку языков: украинского, белорусского, сербского и
болгарского.
Имеет два недостатка:
·
строчная буква «я» имеет код 0xFF (255 в
десятичной системе). Она является «виновницей» ряда неожиданных проблем в
программах без поддержки чистого
8-го бита, а также (гораздо более частый случай)
использующих этот код как служебный (вCP437 он обозначает «неразрывный пробел», в Windows-1252 — ÿ, оба варианта практически не используются; число же-1, в дополнительном
коде длиной 8 бит представляющееся числом255, часто используется в
программировании как специальное значение, например, индикатор конца файла EOF часто представляется значением-1).
·
отсутствуют символы псевдографики, имеющиеся в CP866 и KOI8 (хотя для самих Windows, для которых она
предназначена, в них не было нужды, это делало несовместимость двух
использовавшихся в них кодировок заметнее).