Tekst representatie¶
Alle data in het computergehugen wordt opgeslagen als reeksen van bytes. Hoe de byte-reeksen worden geinterpreteerd hangt af van het datatype dat is afgesproken. Als een reeks bytes wordt geinterpreteerd als tekst, dan is het belangrijk om te weten welke tekenset is gebruikt.
Tekensets¶
Een tekenset is een verzameling van tekens, waarbij elk teken een unieke code heeft. Elke byte in het geheugen kan worden geinterpreteerd als een (deel van een) teken.
ASCII¶
De meest gebruikte tekenset is ASCII, waarbij elk teken een code heeft van 7 bits. Er zijn 128 tekens gedefinieerd, waaronder de letters van het alfabet, cijfers, leestekens en speciale tekens.
ASCII tabel
Decimaal | Hexadecimaal | Teken |
---|---|---|
0 | 0x00 | NUL |
1 | 0x01 | SOH |
2 | 0x02 | STX |
3 | 0x03 | ETX |
4 | 0x04 | EOT |
5 | 0x05 | ENQ |
6 | 0x06 | ACK |
7 | 0x07 | BEL |
8 | 0x08 | BS |
9 | 0x09 | HT |
10 | 0x0A | LF |
11 | 0x0B | VT |
12 | 0x0C | FF |
13 | 0x0D | CR |
14 | 0x0E | SO |
15 | 0x0F | SI |
16 | 0x10 | DLE |
17 | 0x11 | DC1 |
18 | 0x12 | DC2 |
19 | 0x13 | DC3 |
20 | 0x14 | DC4 |
21 | 0x15 | NAK |
22 | 0x16 | SYN |
23 | 0x17 | ETB |
24 | 0x18 | CAN |
25 | 0x19 | EM |
26 | 0x1A | SUB |
27 | 0x1B | ESC |
28 | 0x1C | FS |
29 | 0x1D | GS |
30 | 0x1E | RS |
31 | 0x1F | US |
32 | 0x20 | spatie |
33 | 0x21 | ! |
34 | 0x22 | “ |
35 | 0x23 | # |
36 | 0x24 | $ |
37 | 0x25 | % |
38 | 0x26 | & |
39 | 0x27 | ‘ |
40 | 0x28 | ( |
41 | 0x29 | ) |
42 | 0x2A | * |
43 | 0x2B | + |
44 | 0x2C | , |
45 | 0x2D | - |
46 | 0x2E | . |
47 | 0x2F | / |
48 | 0x30 | 0 |
49 | 0x31 | 1 |
50 | 0x32 | 2 |
51 | 0x33 | 3 |
52 | 0x34 | 4 |
53 | 0x35 | 5 |
54 | 0x36 | 6 |
55 | 0x37 | 7 |
56 | 0x38 | 8 |
57 | 0x39 | 9 |
58 | 0x3A | : |
59 | 0x3B | ; |
60 | 0x3C | < |
61 | 0x3D | = |
62 | 0x3E | > |
63 | 0x3F | ? |
64 | 0x40 | @ |
65 | 0x41 | A |
66 | 0x42 | B |
67 | 0x43 | C |
68 | 0x44 | D |
69 | 0x45 | E |
70 | 0x46 | F |
71 | 0x47 | G |
72 | 0x48 | H |
73 | 0x49 | I |
74 | 0x4A | J |
75 | 0x4B | K |
76 | 0x4C | L |
77 | 0x4D | M |
78 | 0x4E | N |
79 | 0x4F | O |
80 | 0x50 | P |
81 | 0x51 | Q |
82 | 0x52 | R |
83 | 0x53 | S |
84 | 0x54 | T |
85 | 0x55 | U |
86 | 0x56 | V |
87 | 0x57 | W |
88 | 0x58 | X |
89 | 0x59 | Y |
90 | 0x5A | Z |
91 | 0x5B | [ |
92 | 0x5C | \ |
93 | 0x5D | ] |
94 | 0x5E | ^ |
95 | 0x5F | _ |
96 | 0x60 | ` |
97 | 0x61 | a |
98 | 0x62 | b |
99 | 0x63 | c |
100 | 0x64 | d |
101 | 0x65 | e |
102 | 0x66 | f |
103 | 0x67 | g |
104 | 0x68 | h |
105 | 0x69 | i |
106 | 0x6A | j |
107 | 0x6B | k |
108 | 0x6C | l |
109 | 0x6D | m |
110 | 0x6E | n |
111 | 0x6F | o |
112 | 0x70 | p |
113 | 0x71 | q |
114 | 0x72 | r |
115 | 0x73 | s |
116 | 0x74 | t |
117 | 0x75 | u |
118 | 0x76 | v |
119 | 0x77 | w |
120 | 0x78 | x |
121 | 0x79 | y |
122 | 0x7A | z |
123 | 0x7B | { |
124 | 0x7C | | |
125 | 0x7D | } |
126 | 0x7E | ~ |
127 | 0x7F | DEL |
UTF-8¶
De ASCII-tekenset is echter niet voldoende om alle tekens van alle talen te kunnen representeren. Daarom zijn er tekensets gedefinieerd die gebruik maken van 8 bits per teken. De meest gebruikte tekenset is UTF-8. Deze tekenset is een uitbreiding van ASCII, waarbij de eerste 128 tekens gelijk zijn aan ASCII.
Extra tekens UTF-8
Decimaal | Hexadecimaal | Teken |
---|---|---|
128 | 0x80 | € |
129 | 0x81 | |
130 | 0x82 | ‚ |
131 | 0x83 | ƒ |
132 | 0x84 | „ |
133 | 0x85 | … |
134 | 0x86 | † |
135 | 0x87 | ‡ |
136 | 0x88 | ˆ |
137 | 0x89 | ‰ |
138 | 0x8A | Š |
139 | 0x8B | ‹ |
140 | 0x8C | Œ |
141 | 0x8D | |
142 | 0x8E | Ž |
143 | 0x8F | |
144 | 0x90 | |
145 | 0x91 | ‘ |
146 | 0x92 | ’ |
147 | 0x93 | “ |
148 | 0x94 | ” |
149 | 0x95 | • |
150 | 0x96 | – |
151 | 0x97 | — |
152 | 0x98 | ˜ |
153 | 0x99 | ™ |
154 | 0x9A | š |
155 | 0x9B | › |
156 | 0x9C | œ |
157 | 0x9D | |
158 | 0x9E | ž |
159 | 0x9F | Ÿ |
160 | 0xA0 | |
161 | 0xA1 | ¡ |
162 | 0xA2 | ¢ |
163 | 0xA3 | £ |
164 | 0xA4 | ¤ |
165 | 0xA5 | ¥ |
166 | 0xA6 | ¦ |
167 | 0xA7 | § |
168 | 0xA8 | ¨ |
169 | 0xA9 | © |
170 | 0xAA | ª |
171 | 0xAB | « |
172 | 0xAC | ¬ |
173 | 0xAD | |
174 | 0xAE | ® |
175 | 0xAF | ¯ |
176 | 0xB0 | ° |
177 | 0xB1 | ± |
178 | 0xB2 | ² |
179 | 0xB3 | ³ |
180 | 0xB4 | ´ |
181 | 0xB5 | µ |
182 | 0xB6 | ¶ |
183 | 0xB7 | · |
184 | 0xB8 | ¸ |
185 | 0xB9 | ¹ |
186 | 0xBA | º |
187 | 0xBB | » |
188 | 0xBC | ¼ |
189 | 0xBD | ½ |
190 | 0xBE | ¾ |
191 | 0xBF | ¿ |
192 | 0xC0 | À |
193 | 0xC1 | Á |
194 | 0xC2 | Â |
195 | 0xC3 | Ã |
196 | 0xC4 | Ä |
197 | 0xC5 | Å |
198 | 0xC6 | Æ |
199 | 0xC7 | Ç |
200 | 0xC8 | È |
201 | 0xC9 | É |
202 | 0xCA | Ê |
203 | 0xCB | Ë |
204 | 0xCC | Ì |
205 | 0xCD | Í |
206 | 0xCE | Î |
207 | 0xCF | Ï |
208 | 0xD0 | Ð |
209 | 0xD1 | Ñ |
210 | 0xD2 | Ò |
211 | 0xD3 | Ó |
212 | 0xD4 | Ô |
213 | 0xD5 | Õ |
214 | 0xD6 | Ö |
215 | 0xD7 | × |
216 | 0xD8 | Ø |
217 | 0xD9 | Ù |
218 | 0xDA | Ú |
219 | 0xDB | Û |
220 | 0xDC | Ü |
221 | 0xDD | Ý |
222 | 0xDE | Þ |
223 | 0xDF | ß |
224 | 0xE0 | à |
225 | 0xE1 | á |
226 | 0xE2 | â |
227 | 0xE3 | ã |
228 | 0xE4 | ä |
229 | 0xE5 | å |
230 | 0xE6 | æ |
231 | 0xE7 | ç |
232 | 0xE8 | è |
233 | 0xE9 | é |
234 | 0xEA | ê |
235 | 0xEB | ë |
236 | 0xEC | ì |
237 | 0xED | í |
238 | 0xEE | î |
239 | 0xEF | ï |
240 | 0xF0 | ð |
241 | 0xF1 | ñ |
242 | 0xF2 | ò |
243 | 0xF3 | ó |
244 | 0xF4 | ô |
245 | 0xF5 | õ |
246 | 0xF6 | ö |
247 | 0xF7 | ÷ |
248 | 0xF8 | ø |
249 | 0xF9 | ù |
250 | 0xFA | ú |
251 | 0xFB | û |
252 | 0xFC | ü |
253 | 0xFD | ý |
254 | 0xFE | þ |
255 | 0xFF | ÿ |
Unicode¶
De tekenset Unicode is een verzameling van alle tekens van alle talen. De tekenset is gedefinieerd met 21 bits per teken. De eerste 128 tekens zijn gelijk aan ASCII. De tekenset UTF-8 is een subset van Unicode.
Oefening: Tekst of niet?
Download het bestand data.bin en open dit in VSCode. VSCode wil dit niet maar klik op Open Anyway
om het toch te openen.
- Wat zie je?
- Waarom zijn sommige delen leesbaar en andere niet?
- Wat zou de inhoud van het bestand kunnen zijn? Hoe kom je daar achter?