Строковые данные и кодировка символов

  В предыдущем разделе рассказывалось о том, как на компьютерах хранятся числовые данные, но мы также должны подумать о хранении строковых данных, то есть отдельных символов и целых предложений. На практике для хранения символьных данных чаще всего применяется кодировка ASCII или Unicode. Кодировка ASCII проще, поэтому начнем с нее. В ASCII каждый символ английского языка обозначается числовым кодом. Например, букве А соответствует код 0x41, а символу amp; — код 0x26. Наибольшее определенное значение равно 0х7Е; таким образом, любой символ базового набора представляется одним байтом. Многие коды соответствуют управляющим символам и не имеют печатного представления — например, звуковой сигнал 0x07. В табл. 2.2 приведены соответствия между шестнадцатеричными числами и символами ASCII. Более подробная таблица ASCII-кодов приводится по адресу: http://www.asciitable.com/.
Таблица 2.2. Шестнадцатеричные коды символов в ASCII

00-NULL

1—DLE

20-SPC

30-0

40-@

50-P

60-'

70—p

Ol-SOH

11-DCI

21-!

31-1

41-A

51-Q

61-a

71-q

02-STX

12-DC2

22-"

32-2

42-B

52-R

62-b

72-r

03-ETX

13-DC3

23-#

33-3

43-C

53-S

63-c

73-s

04-EOT

14-DC4

24-$

34-4

44-D

54-T

64-d

74-t

05-ENQ

15-NAK

25-%

35-5

45-E

55-U

65-e

75-u

06-ACK

16-SYN

26—amp;

36-6

46-F

56-V

66-f

76—v

07-BEL

17-ETB

27-'

37-7

47-G

57-W

67-g

77-w

08-BS

18-CAN

28—(

38-8

48-H

58-X

68-h

78-x

09-TAB

19-EM

29-)

39-9

49-1

59-Y

69—i

79-y

0A-LF

1A-SUB

2A-*

3A-:

4A-J

5A-Z

6A-j

7A-z





ов-вт

1B-ESC

2 В—I-

ы
СП
1

4В-К

5В-[

6B-k

7В-{

0C-FF

1C-FS

2С-,

ЗС-lt;

4C-L

5С-\

6C-I

7С-|

0D-CR

1D-GS

2D--

30=

4D-M

5D-]

6D-m

7D-}

OE-SO

1E-RS
/>2Е-.

ЗЕ-gt;

4E-N

5Е-А

6E-n

7Е-~

0F-SI

1F-US

2F-/

3F-?

4F-0

5F-_

6F-0

7F-


Чтобы сохранить предложение или слово в кодировке ASCII, необходимо выделить под него область памяти, размер которой в байтах соответствует количеству символов в слове. В каждом байте хранится код одного символа. Порядок байтов в этом случае роли не играет, потому что каждый символ представлен отдельным 1-байтовым кодом. Таким образом, первый символ слова или предложения всегда находится на первом месте. Последовательность байтов в слове или предложении называется строкой (string). Строки часто завершаются нуль- символом (NULL), соответствующим коду 0x00. На рис. 2.6 показан пример строки, хранящейся в кодировке ASCII. Строка состоит из 10 символов и завершается нуль-символом, поэтому для ее хранения выделяется 11 байт, начиная с байта 64.
Строка: 1 Main St.

64

65

66

67

68

69

70

71

72

73

74

31

20

4D

61

69


20

53

74


00

1


М

а

i

п


S

t



Рис. 2.6. ASCII-строка, хранящаяся в памяти, начиная с адреса 64


Кодировка ASCII проста и удобна, если ваши потребности ограничиваются английским алфавитом. Однако для пользователей из других стран мира ее явно недостаточно, поскольку ASCII не позволяет представлять символы национальных алфавитов. Для решения этой проблемы была создана кодировка Unicode, в которой числовой код символа занимает более 1 байта (за подробностями обращайтесь на сайт www.unicode.org). Версия 4.0 стандарта Unicode поддерживает более 96 000 символов, при этом для представления одного символа необходимы 4 байта (вместо 1 байта в ASCII).
Существует три варианта хранения символов Unicode. В первом варианте — UTF-32 — каждый символ представляется 4 байтами, но при этом большая часть памяти будет расходоваться неэффективно. Во втором варианте, UTF-16, часто используемые символы хранятся в 2-байтовых кодах, а более редкие — в 4-байтовых, поэтому в среднем текст занимает меньший объем, чем в UTF-32. Третий вариант называется UTF-8, и один символ в нем представляется 1, 2 или 4 байтами. При этом наиболее часто используемые символы кодируются всего 1 байтом.
Переменная длина кода в UTF-8 и UTF-16 несколько усложняет обработку данных. На практике чаще используется UTF-8, поскольку в этой кодировке меньше места расходуется напрасно, a ASCII является ее подмножеством. Если строка UTF-8 состоит только из ASCII-символов, каждый символ в ней кодируется 1 байтом, а по своему содержимому такая строка совпадает с эквивалентной ASCII- строкой.
<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Строковые данные и кодировка символов:

  1. Данные, прекрасные данные
  2. 2.5. СИМВОЛЫ В ПОЛИТИЧЕСКОЙ РЕКЛАМЕ •
  3. 3.6. Найробский договор об охране олимпийского символа
  4. Символы Змея
  5. 4. Относительность символа
  6. 3. Значение объединяющего символа
  7. Узлы философии словесности: мимесис и символ
  8. 6.3.4.1. Данные, вносимые в реестр
  9. 5. Природа объединяющего символа у Шпиттелера
  10. IV.Данные и переменные
  11. § 13. Права на звания, степени, знаки, награды, призы, символы (п. 1735-1738)
  12. Необходимые и вспомогательные данные
  13. § 26. Персональные данные работника
  14. Данные о суммах учтенных векселей
  15. Все данные — файлы
  16. Некоторые данные
  17. , «Татарин» как идентификационная фигура и символ «новой мужественности»?
  18. Данные в пользу /-//(-концепции