Кодовая таблица KOI8-R
KOI8-R была разработана в 1980-х годах для использования в Unix-подобных системах и в советских компьютерах (например, СМ ЭВМ, ДВК).
Она стала стандартом для:
- Электронной почты в раннем Рунете
- Usenet и FidoNet (сетевые конференции)
- Unix/Linux систем (до перехода на UTF-8)
- Релком (первая российская компьютерная сеть)
Название KOI8 расшифровывается как "Код Обмена Информацией, 8-битный", а буква R означает Russian (или "Русский").
Первая половина таблицы совпадает с таблицей ASCII.
Вторая половина таблицы представлена ниже:
| Dec | Hex | Char | Dec | Hex | Char | Dec | Hex | Char | Dec | Hex | Char |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 128 | 80 | ─ | 160 | A0 | ═ | 192 | C0 | ю | 224 | E0 | Ю |
| 129 | 81 | │ | 161 | A1 | ║ | 193 | C1 | а | 225 | E1 | А |
| 130 | 82 | ┌ | 162 | A2 | ╒ | 194 | C2 | б | 226 | E2 | Б |
| 131 | 83 | ┐ | 163 | A3 | ё | 195 | C3 | ц | 227 | E3 | Ц |
| 132 | 84 | └ | 164 | A4 | ╓ | 196 | C4 | д | 228 | E4 | Д |
| 133 | 85 | ┘ | 165 | A5 | ╔ | 197 | C5 | е | 229 | E5 | Е |
| 134 | 86 | ├ | 166 | A6 | ╕ | 198 | C6 | ф | 230 | E6 | Ф |
| 135 | 87 | ┤ | 167 | A7 | ╖ | 199 | C7 | г | 231 | E7 | Г |
| 136 | 88 | ┬ | 168 | A8 | ╗ | 200 | C8 | х | 232 | E8 | Х |
| 137 | 89 | ┴ | 169 | A9 | ╘ | 201 | C9 | и | 233 | E9 | И |
| 138 | 8A | ┼ | 170 | AA | ╙ | 202 | CA | й | 234 | EA | Й |
| 139 | 8B | ▀ | 171 | AB | ╚ | 203 | CB | к | 235 | EB | К |
| 140 | 8C | ▄ | 172 | AC | ╛ | 204 | CC | л | 236 | EC | Л |
| 141 | 8D | █ | 173 | AD | ╜ | 205 | CD | м | 237 | ED | М |
| 142 | 8E | ▌ | 174 | AE | ╝ | 206 | CE | н | 238 | EE | Н |
| 143 | 8F | ▐ | 175 | AF | ╞ | 207 | CF | о | 239 | EF | О |
| 144 | 90 | ░ | 176 | B0 | ╟ | 208 | D0 | п | 240 | F0 | П |
| 145 | 91 | ▒ | 177 | B1 | ╠ | 209 | D1 | я | 241 | F1 | Я |
| 146 | 92 | ▓ | 178 | B2 | ╡ | 210 | D2 | р | 242 | F2 | Р |
| 147 | 93 | ⌠ | 179 | B3 | Ё | 211 | D3 | с | 243 | F3 | С |
| 148 | 94 | ■ | 180 | B4 | ╢ | 212 | D4 | т | 244 | F4 | Т |
| 149 | 95 | ∙ | 181 | B5 | ╣ | 213 | D5 | у | 245 | F5 | У |
| 150 | 96 | √ | 182 | B6 | ╤ | 214 | D6 | ж | 246 | F6 | Ж |
| 151 | 97 | ≈ | 183 | B7 | ╥ | 215 | D7 | в | 247 | F7 | В |
| 152 | 98 | ≤ | 184 | B8 | ╦ | 216 | D8 | ь | 248 | F8 | Ь |
| 153 | 99 | ≥ | 185 | B9 | ╧ | 217 | D9 | ы | 249 | F9 | Ы |
| 154 | 9A | (NBSP) | 186 | BA | ╨ | 218 | DA | з | 250 | FA | З |
| 155 | 9B | ⌡ | 187 | BB | ╩ | 219 | DB | ш | 251 | FB | Ш |
| 156 | 9C | ° | 188 | BC | ╪ | 220 | DC | э | 252 | FC | Э |
| 157 | 9D | ² | 189 | BD | ╫ | 221 | DD | щ | 253 | FD | Щ |
| 158 | 9E | · | 190 | BE | ╬ | 222 | DE | ч | 254 | FE | Ч |
| 159 | 9F | ÷ | 191 | BF | ╭ | 223 | DF | ъ | 255 | FF | Ъ |
Особенность KOI8-R
Главная особенность KOI8-R — зеркальность русских букв относительно 7-го бита. Если взять код русской буквы и отбросить старший бит (то есть взять код & 0x7F), то получится соответствующая латинская буква:
| Русская | Код (Dec) | Без 8-го бита | Латинская |
|---|---|---|---|
| ю (строчная) | 192 | 192 - 128 = 64 | @ |
| Ю (заглавная) | 224 | 224 - 128 = 96 | ` |
| а (строчная) | 193 | 193 - 128 = 65 | A |
| А (заглавная) | 225 | 225 - 128 = 97 | a |
Это свойство позволяло русскому тексту оставаться читаемым транслитом при потере 8-го бита (например, при передаче через старые 7-битные каналы связи). Слово "Привет" превращалось в "pRIWET", что было гораздо понятнее, чем полный хаос, который давали другие кодировки.