Файл: Тахнологии программирования. Операции, производимые с данными.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 71

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Для английского языка противоречия уже сняты. Институт стандартизации США (ANSI -- American National Standard Institute) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange -- стандартный код информационного обмена США). В системе ASCII закреплены две таблицы кодирования -- базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

Первые 32 кода базовой таблицы, начиная с нулевого, отданы производителям аппаратных средств (в первую очередь производителям компьютеров и печатающих устройств). В этой области размещаются так называемые управляющие коды, которым не соответствуют никакие символы языков, и, соответственно, эти коды не выводятся ни на экран, ни на устройства печати, но ими можно управлять тем, как производится вывод прочих данных.

Начиная с кода 32 по код 127 размещены коды символов английского алфавита, знаков препинания, цифр, арифметических действий и некоторых вспомогательных символов. Базовая таблица кодировки ASCII приведена в таблице 2. Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCII на уровень международного стандарта, и национальным системам кодирования пришлось «отступить» во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 по 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.

Таблица 2- Базовая таблица кодировки ASCII

код

код

код

код

код

код

33

!

50

1

65

A

80

P

101

e

116

t

34

51

2

66

B

81

Q

102

f

117

u

35

#

52

3

67

C

82

R

103

g

118

v

36

$

53

4

68

D

83

S

104

h

119

w

37

%

54

5

69

E

84

T

105

i

120

x

38

&

55

6

70

F

85

U

106

j

121

y

40

(

56

7

71

G

86

V

107

k

122

z

41

)

57

8

72

H

87

W

108

l

42

*

58

9

73

I

88

X

109

m

43

+

59

:

74

J

89

Y

110

n

44

,

60

;

75

K

90

Z

111

o

45

-

61

<

76

L

97

a

112

p

46

.

62

>

77

M

98

b

113

q

47

/

63

?

78

N

99

c

114

r

49

0

64

@

79

O

100

d

115

s


Так, например, кодировка символов русского языка, известная как кодировка Windows-1251, была введена «извне» -- компанией Microsoft, но, учитывая широкое распространение операционных систем и других продуктов этой компании в России, она глубоко закрепилась и нашла широкое распространение (таблица 3). Эта кодировка используется на большинстве локальных компьютеров, работающих на платформе Windows.

Таблица 3 - Кодировка Windows 1251

кол

код

код

код

192

А

208

Р

224

а

240

р

193

Б

209

С

225

б

241

с

194

В

210

Т

226

в

242

т

195

Г

211

У

227

г

243

у

196

Д

212

Ф

228

д

244

ф

197

Е

213

Х

229

е

245

х

198

Ж

214

Ц

230

ж

246

ц

199

З

215

Ч

231

з

247

ч

200

И

216

Ш

232

и

248

ш

201

Й

217

Щ

233

й

249

щ

202

К

218

Ъ

234

к

250

ъ

203

Л

219

Ы

235

л

251

ы

204

М

220

Ь

236

м

252

ь

205

Н

221

Э

237

н

253

э

206

О

222

Ю

238

о

254

ю

207

П

223

Я

239

п

255

я

Другая распространенная кодировка носит название КОИ-8 (код обмена информацией, восьмизначный) -- ее происхождение относится ко временам действия Совета Экономической Взаимопомощи государств Восточной Европы (таблица4). Сегодня кодировка КОИ-8 имеет широкое распространение в компьютерных сетях на территории России и в российском секторе Интернет.


Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название кодировки /50 (International Standard Organization -- Международный институт стандартизации). На практике данная кодировка используется редко.

На компьютерах, работающих в операционных системах MS-DOS, могут действовать еще две кодировки (кодировка ГОСТ и кодировка ГОСТ-альтернативная). Первая из них считалась устаревшей даже в первые годы появления персональной вычислительной техники, но вторая используется и по сей день.

В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных -- это одна из распространенных задач информатики.

2.4 Универсальная система кодирования текстовых данных

Если проанализировать организационные трудности, связанные с созданием единой системы кодирования текстовых данных, то можно прийти к выводу, что они вызваны ограниченным набором кодов (256). В то же время очевидно, что если, например, кодировать символы не восьмиразрядными двоичными числами, а числами с большим количеством разрядов, то и диапазон возможных значений кодов станет намного больше. Такая система, основанная на 16-разрядном кодировании символов, получила название универсальной -- UNICODE. Unicode (Юникод или Уникод, англ. Unicode) -- стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Юникод имеет несколько форм представления: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт. В MicrosoftWindows NT и основанных на ней системах Windows 2000 и Windows XP в основном используется форма UTF-16LE. В UNIX-подобных операционных системах GNU/Linux, BSD и Mac OS X принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в оперативной памяти.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium), объединяющей крупнейшие IT-корпорации. Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита и кириллицы, при этом становятся ненужными кодовые страницы.


По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы, -- а эта работа ведётся постоянно, поскольку изначально система Юникод включала только Plane 0 -- двухбайтные коды, -- выходят и новые документы ISO. Система Юникод существует в общей сложности в следующих версиях:

1.1 (соответствует стандарту ISO/IEC 10646--1:1993),

2.0, 2.1 (тот же стандарт ISO/IEC 10646--1:1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2),

3.0 (стандарт ISO/IEC 10646--1:2000).

3.2 (стандарт 2002 года)

4.0 (стандарт 2003)

4.01 (стандарт 2004)

4.1 (стандарт 2005)

5.0 (стандарт 2006)

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 231 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 220+216 (1 114 112) для совместимости с UTF-16. Впрочем, даже и этого более чем достаточно -- сегодня (в версии 5.0) используется чуть больше 99 000 кодовых позиций.

Кодовое пространство разбито на 17 плоскостей по 216 (65536) символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей. Плоскости 16 и 17 выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx» (для кодов 0…FFFF) или «U+xxxxx» (для кодов 10000…FFFFF) или «U+xxxxxx» (для кодов 100000…10FFFF), где xxx -- шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код 044F16 = 110310.

Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

Графические символы -- это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

Графические символы включают в себя следующие группы:

буквы, содержащиеся хотя бы в одном из обслуживаемых алфавитов; цифры; знаки пунктуации; специальные знаки (математические, технические, идеограммы и пр.); разделители.

Юникод -- это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character).

Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке. К ним относятся, в частности, знаки ударения и прочие диакритические знаки. Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (base characters), а непротяжённые- модифицирующими (combining characters); причём последние не могут встречаться самостоятельно. Например, символ «б» может быть представлен как последовательность базового символа «a» (U+0061) и модифицирующего символа « ?» (U+0301) или как монолитный символ «б» (U+00C1).


Особый тип модифицирующих символов -- селекторы варианта начертания (variation selectors). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов письма Phags-Pa.

Поскольку одни и те же символы можно представить различными кодами, что иногда затрудняет обработку, существуют процессы нормализации, предназначенные для приведения текста к определённому стандартному виду.

В стандарте Юникода определены 4 формы нормализации текста:

1) Форма нормализации D (NFD) -- каноническая декомпозиция. В процессе приведения текста в эту форму все составные символы рекурсивно заменяются на несколько составных, в соответствии с таблицами декомпозиции.

2) Форма нормализации C (NFC) -- каноническая декомпозиция с последующей канонической композицией. Сначала текст приводится к форме D, после чего выполняется каноническая композиция -- текст обрабатывается от начала к концу и выполняются следующие правила:

Символ S является начальным, если он имеет нулевой класс модификации в базе символов Юникода.

В любой последовательности символов, стартующей с начального символа S символ C блокируется от S если и только если между S и C есть какой-либо символ B, который или является начальным, или имеет одинаковый или больший класс модификации, чем C. Это правило распространяется только на строки прошедшие каноническую декомпозицию.

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

Символ X может быть первично совмещен с символом Y если и только если существует первичный композит Z, канонически эквивалентный последовательности <X, Y>.

Если очередной символ C не блокируется последним встреченным начальным базовым символом L, и он может быть успешно первично совмещен с ним, то L заменяется на композит L-C, а C удаляется.

3) Форма нормализации KD (NFKD) -- совместимая декомпозиция. При приведении в эту форму все составные символы заменяются используя как канонические карты декомпозиции Юникода, так и совместимые карты декомпозиции, после чего результат ставится в каноническом порядке.

4) Форма нормализации KC (NFKC) -- совместимая декомпозиция с последующей канонической композицией.

Термины «композиция» и «декомпозиция» понимают под собой соответственно соединение или разложение символов на составные части.

Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем. Под символы кириллицы выделены коды от U+0400 до U+052F. Шестнадцать разрядов позволяют обеспечить уникальные коды для 65 536 различных символов -- этого поля достаточно для размещения в одной таблице символов большинства языков планеты.