Что такое кодировка:
Кодировка это процесс преобразования данных или сигналов из формы, удобной для восприятия, в форму, удобную для хранения, обработки и передачи.
Данные в микроконтроллере хранятся, обрабатываются и передаются в виде логических единиц и нулей, то есть в двоичной системе счисления. Числа можно перевести из любой системы счисления в двоичную и обратно, а символы (буквы) перевести в двоичную систему нельзя. Символы не переводятся а кодируются в числа, в соответствии с используемой таблицей символов. Таблица символов это таблица в которой каждому символу соответствует число, например, символу 'J' соответствует число 74. Значит в памяти Arduino символ 'J' будет храниться как число 0b01001010 = 0x4A = 74.
Исторически сложилось так, что было создано множество таблиц символов. Виной тому и множество алфавитов различных языков, и разные взгляды на очерёдность следования символов в таблице, и стремление разработчиков уместить все символы в 1 байт, и наоборот создать универсальные кодировки ценой увеличения занимаемого места и т.д. Но в большинстве таблиц, первые 127 символов совпадают и являются знаками, числами и символами латиницы.
Ваш компьютер не является исключением, текст на нём так же хранится в виде чисел, а значит он кодируется. При этом разные файлы могут использовать разную кодировку (использовать разные таблицы символов). Значит и скетчи хранящиеся на Вашем компьютере так же используют определённую кодировку. А именно от кодировки скетча зависит как будут записаны русские символы в микроконтроллер, ведь компилятор не кодирует текст, а читает и сохраняет его числовое (кодированное) представление.
Наиболее распространёнными кодировками с поддержкой Русского языка (с использованием символов Кириллицы) являются: UTF-8, Windows-1251, CP-866, KOI-8R, ISO-8859-5. Стоит отметить что все эти кодировки представляют один символ одним однобайтным числом, кроме кодировки UTF-8 в которой один символ Кириллицы кодируется двухбайтным числом, а значит в кодировке UTF-8 строка русского текста занимает в два раза больше памяти.
Какую кодировку использует Arduino IDE:
Точно сказать какую кодировку использует Arduino IDE нельзя, так как разные её версии использовали разную кодировку. На момент написания данной статьи последняя версия Arduino IDE 1.8.5 сохраняет скетчи в кодировке UTF-8 и монитор последовательного порта этой версии использует кодировку UTF-8. Но не сохранённые скетчи используют кодировку предыдущих версий - Windows-1251.
Попробуйте в Arduino IDE 1.8.5 создать новый скетч (меню: «Файл>Новый») и напишите в нём следующий код:
void setup(){ // Serial.begin(9600); // Инициируем работу шины UART на скорости 9600 бит/сек. Serial.println("Привет"); // Отправляем текст в монитор последовательного порта. } // void loop(){ // } //
Загрузите скетч в Arduino (меню: «Скетч>Загрузка»). Arduino IDE предложит Вам сохранить скетч перед загрузкой, откажитесь нажав на кнопку «Отмена», начнётся загрузка скетча в Arduino. Дождитесь завершения загрузки и откройте монитор последовательного порта (меню: «Инструменты>монитор порта»). В мониторе порта вы увидите текст «⸮⸮⸮⸮⸮⸮». Дело в том, что скетч был загружен в Arduino в кодировке Windows-1251, а монитор последовательного порта использует кодировку UTF-8.
Теперь загрузите тот же скетч в Arduino (меню: «Скетч>Загрузка»), но согласитесь с сохранением скетча, а после его загрузки откройте монитор последовательного порта (меню: «Инструменты>монитор порта»). В мониторе порта вы увидите текст «Привет». Дело в том, что теперь скетч был загружен в кодировке UTF-8 и в той же кодировке работает монитор порта. Кодировки совпали и текст стал читаемым.
Если вместо строки «Привет» Вы напишете «Privet», то в обоих случаях строка корректно отобразится в мониторе порта, так как числовое представление символов латиницы совпадает в большинстве кодировок.
Запись и вывод текста в Arduino IDE на русском языке:
Как видно из предыдущего примера, кодировка выводимого текста на русском языке должна совпадать с кодировкой устройства для которого этот текст предназначен. Но многие устройства (дисплеи, модули gsm, bluetooth и т.д.) используют кодировку отличную от UTF-8 и тогда возникает вопрос, как в скетче записать текст на русском языке?
Для записи одного символа достаточно указать его код из таблицы символов (в примере указан код в 10-тичной системе счисления):
char i = 74; // Определяем символ с кодом 74 (это код символа 'J'). void setup(){ // Serial.begin(9600); // Инициируем работу шины UART на скорости 9600 бит/сек. Serial.println(i); // Отправляем символ в монитор последовательного порта. } // void loop(){ // } //
В мониторе последовательного порта отобразится символ 'J'.
Для записи любого символа в строке нужно указать его код из таблицы символов в 8-ричной системе счисления, которому должен предшествовать обратный слеш «\». Данное правило действует для любых строк в Arduino IDE.
char i[]="\110\145\154\154\157"; // Определяем строку из 5 кодов символов "Hello". Символ конца строки добавляется автоматически. void setup(){ // Serial.begin(9600); // Инициируем работу шины UART на скорости 9600 бит/сек. Serial.println(i); // Отправляем строку в монитор последовательного порта. } // void loop(){ // } //
Не смотря на то что запись строки «i» кажется громоздкой, она занимает всего 6 байт (5 символов + автоматически добавленный символ конца строки). В мониторе последовательного порта отобразится строка "Hello".
Для записи символов и строк на русском языке действуют те же правила:
char i[] = "\320\237\321\200\320\270\320\262\320\265\321\202"; // текст "Привет" в кодировке UTF-8. char j[] = "\317\360\350\342\345\362"; // текст "Привет" в кодировке Windows-1251. char k[] = "\217\340\250\242\245\342"; // текст "Привет" в кодировке CP-866. char l[] = "\360\322\311\327\305\324"; // текст "Привет" в кодировке KOI-8R. char m[] = "\277\340\330\322\325\342"; // текст "Привет" в кодировке ISO-8859-5. char n[] = "Привет"; // текст "Привет" в кодировке файла скетча.
В данном примере строки «j», «k», «l» и «m» занимают по 7 байт (6 символов + автоматически добавленный символ конца строки), а строка «i» занимает 13 байт (6 символов по 2 байта каждый + автоматически добавленный символ конца строки). Строка «n» может занимать либо 7, либо 13 байт, это зависит от кодировки используемой Arduino IDE.
Если в тексте с символами Кириллицы присутствуют числа, знаки или символы латиницы, то символы Кириллицы пишутся кодами, а символы знаков, цифр и латиницы можно писать символами, так как они будут корректно отображаться для практически любой кодировки.
char m[] = "\277\340\330\322\325\342 - Hello"; // текст "Привет - Hello" в кодировке ISO-8859-5.
Таблица символов:
В таблице каждому символу сопоставлен его код в десятичной, шестнадцатеричной и восьмеричной системах счисления. Для указания символа в строке, используется его код записанный в восьмеричной системе счисления (указан в таблице серым цветом и начинается обратным слешем).
Симв: | UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
пробел | 32 | 0x20 | \40 |
32 | 0x20 | \40 | 32 | 0x20 | \40 | 32 | 0x20 | \40 | 32 | 0x20 | \40 |
! | 33 | 0x21 | \41 | 33 | 0x21 | \41 | 33 | 0x21 | \41 | 33 | 0x21 | \41 | 33 | 0x21 | \41 |
" | 34 | 0x22 | \42 | 34 | 0x22 | \42 | 34 | 0x22 | \42 | 34 | 0x22 | \42 | 34 | 0x22 | \42 |
# | 35 | 0x23 | \43 | 35 | 0x23 | \43 | 35 | 0x23 | \43 | 35 | 0x23 | \43 | 35 | 0x23 | \43 |
$ | 36 | 0x24 | \44 | 36 | 0x24 | \44 | 36 | 0x24 | \44 | 36 | 0x24 | \44 | 36 | 0x24 | \44 |
% | 37 | 0x25 | \45 | 37 | 0x25 | \45 | 37 | 0x25 | \45 | 37 | 0x25 | \45 | 37 | 0x25 | \45 |
& | 38 | 0x26 | \46 | 38 | 0x26 | \46 | 38 | 0x26 | \46 | 38 | 0x26 | \46 | 38 | 0x26 | \46 |
' | 39 | 0x27 | \47 | 39 | 0x27 | \47 | 39 | 0x27 | \47 | 39 | 0x27 | \47 | 39 | 0x27 | \74 |
( | 40 | 0x28 | \50 | 40 | 0x28 | \50 | 40 | 0x28 | \50 | 40 | 0x28 | \50 | 40 | 0x28 | \50 |
) | 41 | 0x29 | \51 | 41 | 0x29 | \51 | 41 | 0x29 | \51 | 41 | 0x29 | \51 | 41 | 0x29 | \51 |
* | 42 | 0x2A | \52 | 42 | 0x2A | \52 | 42 | 0x2A | \52 | 42 | 0x2A | \52 | 42 | 0x2A | \52 |
+ | 43 | 0x2B | \53 | 43 | 0x2B | \53 | 43 | 0x2B | \53 | 43 | 0x2B | \53 | 43 | 0x2B | \53 |
, | 44 | 0x2C | \54 | 44 | 0x2C | \54 | 44 | 0x2C | \54 | 44 | 0x2C | \54 | 44 | 0x2C | \54 |
- | 45 | 0x2D | \55 | 45 | 0x2D | \55 | 45 | 0x2D | \55 | 45 | 0x2D | \55 | 45 | 0x2D | \55 |
. | 46 | 0x2E | \56 | 46 | 0x2E | \56 | 46 | 0x2E | \56 | 46 | 0x2E | \56 | 46 | 0x2E | \56 |
/ | 47 | 0x2F | \57 | 47 | 0x2F | \57 | 47 | 0x2F | \57 | 47 | 0x2F | \57 | 47 | 0x2F | \57 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
0 | 48 | 0x30 | \60 |
48 | 0x30 | \60 | 48 | 0x30 | \60 | 48 | 0x30 | \60 | 48 | 0x30 | \60 |
1 | 49 | 0x31 | \61 | 49 | 0x31 | \61 | 49 | 0x31 | \61 | 49 | 0x31 | \61 | 49 | 0x31 | \61 |
2 | 50 | 0x32 | \62 | 50 | 0x32 | \62 | 50 | 0x32 | \62 | 50 | 0x32 | \62 | 50 | 0x32 | \62 |
3 | 51 | 0x33 | \63 | 51 | 0x33 | \63 | 51 | 0x33 | \63 | 51 | 0x33 | \63 | 51 | 0x33 | \63 |
4 | 52 | 0x34 | \64 | 52 | 0x34 | \64 | 52 | 0x34 | \64 | 52 | 0x34 | \64 | 52 | 0x34 | \64 |
5 | 53 | 0x35 | \65 | 53 | 0x35 | \65 | 53 | 0x35 | \65 | 53 | 0x35 | \65 | 53 | 0x35 | \65 |
6 | 54 | 0x36 | \66 | 54 | 0x36 | \66 | 54 | 0x36 | \66 | 54 | 0x36 | \66 | 54 | 0x36 | \66 |
7 | 55 | 0x37 | \67 | 55 | 0x37 | \67 | 55 | 0x37 | \67 | 55 | 0x37 | \67 | 55 | 0x37 | \74 |
8 | 56 | 0x38 | \70 | 56 | 0x38 | \70 | 56 | 0x38 | \70 | 56 | 0x38 | \70 | 56 | 0x38 | \70 |
9 | 57 | 0x39 | \71 | 57 | 0x39 | \71 | 57 | 0x39 | \71 | 57 | 0x39 | \71 | 57 | 0x39 | \71 |
: | 58 | 0x3A | \72 | 58 | 0x3A | \72 | 58 | 0x3A | \72 | 58 | 0x3A | \72 | 58 | 0x3A | \72 |
; | 59 | 0x3B | \73 | 59 | 0x3B | \73 | 59 | 0x3B | \73 | 59 | 0x3B | \73 | 59 | 0x3B | \73 |
< | 60 | 0x3C | \74 | 60 | 0x3C | \74 | 60 | 0x3C | \74 | 60 | 0x3C | \74 | 60 | 0x3C | \74 |
= | 61 | 0x3D | \75 | 61 | 0x3D | \75 | 61 | 0x3D | \75 | 61 | 0x3D | \75 | 61 | 0x3D | \75 |
> | 62 | 0x3E | \76 | 62 | 0x3E | \76 | 62 | 0x3E | \76 | 62 | 0x3E | \76 | 62 | 0x3E | \76 |
? | 63 | 0x3F | \77 | 63 | 0x3F | \77 | 63 | 0x3F | \77 | 63 | 0x3F | \77 | 63 | 0x3F | \77 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
@ | 64 | 0x40 | \100 |
64 | 0x40 | \100 | 64 | 0x40 | \100 | 64 | 0x40 | \100 | 64 | 0x40 | \100 |
A | 65 | 0x41 | \101 | 65 | 0x41 | \101 | 65 | 0x41 | \101 | 65 | 0x41 | \101 | 65 | 0x41 | \101 |
B | 66 | 0x42 | \102 | 66 | 0x42 | \102 | 66 | 0x42 | \102 | 66 | 0x42 | \102 | 66 | 0x42 | \102 |
C | 67 | 0x43 | \103 | 67 | 0x43 | \103 | 67 | 0x43 | \103 | 67 | 0x43 | \103 | 67 | 0x43 | \103 |
D | 68 | 0x44 | \104 | 68 | 0x44 | \104 | 68 | 0x44 | \104 | 68 | 0x44 | \104 | 68 | 0x44 | \104 |
E | 69 | 0x45 | \105 | 69 | 0x45 | \105 | 69 | 0x45 | \105 | 69 | 0x45 | \105 | 69 | 0x45 | \105 |
F | 70 | 0x46 | \106 | 70 | 0x46 | \106 | 70 | 0x46 | \106 | 70 | 0x46 | \106 | 70 | 0x46 | \106 |
G | 71 | 0x47 | \107 | 71 | 0x47 | \107 | 71 | 0x47 | \107 | 71 | 0x47 | \107 | 71 | 0x47 | \114 |
H | 72 | 0x48 | \110 | 72 | 0x48 | \110 | 72 | 0x48 | \110 | 72 | 0x48 | \110 | 72 | 0x48 | \110 |
I | 73 | 0x49 | \111 | 73 | 0x49 | \111 | 73 | 0x49 | \111 | 73 | 0x49 | \111 | 73 | 0x49 | \111 |
J | 74 | 0x4A | \112 | 74 | 0x4A | \112 | 74 | 0x4A | \112 | 74 | 0x4A | \112 | 74 | 0x4A | \112 |
K | 75 | 0x4B | \113 | 75 | 0x4B | \113 | 75 | 0x4B | \113 | 75 | 0x4B | \113 | 75 | 0x4B | \113 |
L | 76 | 0x4C | \114 | 76 | 0x4C | \114 | 76 | 0x4C | \114 | 76 | 0x4C | \114 | 76 | 0x4C | \114 |
M | 77 | 0x4D | \115 | 77 | 0x4D | \115 | 77 | 0x4D | \115 | 77 | 0x4D | \115 | 77 | 0x4D | \115 |
N | 78 | 0x4E | \116 | 78 | 0x4E | \116 | 78 | 0x4E | \116 | 78 | 0x4E | \116 | 78 | 0x4E | \116 |
O | 79 | 0x4F | \117 | 79 | 0x4F | \117 | 79 | 0x4F | \117 | 79 | 0x4F | \117 | 79 | 0x4F | \117 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
P | 80 | 0x50 | \120 |
80 | 0x50 | \120 | 80 | 0x50 | \120 | 80 | 0x50 | \120 | 80 | 0x50 | \120 |
Q | 81 | 0x51 | \121 | 81 | 0x51 | \121 | 81 | 0x51 | \121 | 81 | 0x51 | \121 | 81 | 0x51 | \121 |
R | 82 | 0x52 | \122 | 82 | 0x52 | \122 | 82 | 0x52 | \122 | 82 | 0x52 | \122 | 82 | 0x52 | \122 |
S | 83 | 0x53 | \123 | 83 | 0x53 | \123 | 83 | 0x53 | \123 | 83 | 0x53 | \123 | 83 | 0x53 | \123 |
T | 84 | 0x54 | \124 | 84 | 0x54 | \124 | 84 | 0x54 | \124 | 84 | 0x54 | \124 | 84 | 0x54 | \124 |
U | 85 | 0x55 | \125 | 85 | 0x55 | \125 | 85 | 0x55 | \125 | 85 | 0x55 | \125 | 85 | 0x55 | \125 |
V | 86 | 0x56 | \126 | 86 | 0x56 | \126 | 86 | 0x56 | \126 | 86 | 0x56 | \126 | 86 | 0x56 | \126 |
W | 87 | 0x57 | \127 | 87 | 0x57 | \127 | 87 | 0x57 | \127 | 87 | 0x57 | \127 | 87 | 0x57 | \134 |
X | 88 | 0x58 | \130 | 88 | 0x58 | \130 | 88 | 0x58 | \130 | 88 | 0x58 | \130 | 88 | 0x58 | \130 |
Y | 89 | 0x59 | \131 | 89 | 0x59 | \131 | 89 | 0x59 | \131 | 89 | 0x59 | \131 | 89 | 0x59 | \131 |
Z | 90 | 0x5A | \132 | 90 | 0x5A | \132 | 90 | 0x5A | \132 | 90 | 0x5A | \132 | 90 | 0x5A | \132 |
[ | 91 | 0x5B | \133 | 91 | 0x5B | \133 | 91 | 0x5B | \133 | 91 | 0x5B | \133 | 91 | 0x5B | \133 |
\ | 92 | 0x5C | \134 | 92 | 0x5C | \134 | 92 | 0x5C | \134 | 92 | 0x5C | \134 | 92 | 0x5C | \134 |
] | 93 | 0x5D | \135 | 93 | 0x5D | \135 | 93 | 0x5D | \135 | 93 | 0x5D | \135 | 93 | 0x5D | \135 |
^ | 94 | 0x5E | \136 | 94 | 0x5E | \136 | 94 | 0x5E | \136 | 94 | 0x5E | \136 | 94 | 0x5E | \136 |
_ | 95 | 0x5F | \137 | 95 | 0x5F | \137 | 95 | 0x5F | \137 | 95 | 0x5F | \137 | 95 | 0x5F | \137 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
` | 96 | 0x60 | \140 |
96 | 0x60 | \140 | 96 | 0x60 | \140 | 96 | 0x60 | \140 | 96 | 0x60 | \140 |
a | 97 | 0x61 | \141 | 97 | 0x61 | \141 | 97 | 0x61 | \141 | 97 | 0x61 | \141 | 97 | 0x61 | \141 |
b | 98 | 0x62 | \142 | 98 | 0x62 | \142 | 98 | 0x62 | \142 | 98 | 0x62 | \142 | 98 | 0x62 | \142 |
c | 99 | 0x63 | \143 | 99 | 0x63 | \143 | 99 | 0x63 | \143 | 99 | 0x63 | \143 | 99 | 0x63 | \143 |
d | 100 | 0x64 | \144 | 100 | 0x64 | \144 | 100 | 0x64 | \144 | 100 | 0x64 | \144 | 100 | 0x64 | \144 |
e | 101 | 0x65 | \145 | 101 | 0x65 | \145 | 101 | 0x65 | \145 | 101 | 0x65 | \145 | 101 | 0x65 | \145 |
f | 102 | 0x66 | \146 | 102 | 0x66 | \146 | 102 | 0x66 | \146 | 102 | 0x66 | \146 | 102 | 0x66 | \146 |
g | 103 | 0x67 | \147 | 103 | 0x67 | \147 | 103 | 0x67 | \147 | 103 | 0x67 | \147 | 103 | 0x67 | \154 |
h | 104 | 0x68 | \150 | 104 | 0x68 | \150 | 104 | 0x68 | \150 | 104 | 0x68 | \150 | 104 | 0x68 | \150 |
i | 105 | 0x69 | \151 | 105 | 0x69 | \151 | 105 | 0x69 | \151 | 105 | 0x69 | \151 | 105 | 0x69 | \151 |
j | 106 | 0x6A | \152 | 106 | 0x6A | \152 | 106 | 0x6A | \152 | 106 | 0x6A | \152 | 106 | 0x6A | \152 |
k | 107 | 0x6B | \153 | 107 | 0x6B | \153 | 107 | 0x6B | \153 | 107 | 0x6B | \153 | 107 | 0x6B | \153 |
l | 108 | 0x6C | \154 | 108 | 0x6C | \154 | 108 | 0x6C | \154 | 108 | 0x6C | \154 | 108 | 0x6C | \154 |
m | 109 | 0x6D | \155 | 109 | 0x6D | \155 | 109 | 0x6D | \155 | 109 | 0x6D | \155 | 109 | 0x6D | \155 |
n | 110 | 0x6E | \156 | 110 | 0x6E | \156 | 110 | 0x6E | \156 | 110 | 0x6E | \156 | 110 | 0x6E | \156 |
o | 111 | 0x6F | \157 | 111 | 0x6F | \157 | 111 | 0x6F | \157 | 111 | 0x6F | \157 | 111 | 0x6F | \157 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
p | 112 | 0x70 | \160 |
112 | 0x70 | \160 | 112 | 0x70 | \160 | 112 | 0x70 | \160 | 112 | 0x70 | \160 |
q | 113 | 0x71 | \161 | 113 | 0x71 | \161 | 113 | 0x71 | \161 | 113 | 0x71 | \161 | 113 | 0x71 | \161 |
r | 114 | 0x72 | \162 | 114 | 0x72 | \162 | 114 | 0x72 | \162 | 114 | 0x72 | \162 | 114 | 0x72 | \162 |
s | 115 | 0x73 | \163 | 115 | 0x73 | \163 | 115 | 0x73 | \163 | 115 | 0x73 | \163 | 115 | 0x73 | \163 |
t | 116 | 0x74 | \164 | 116 | 0x74 | \164 | 116 | 0x74 | \164 | 116 | 0x74 | \164 | 116 | 0x74 | \164 |
u | 117 | 0x75 | \165 | 117 | 0x75 | \165 | 117 | 0x75 | \165 | 117 | 0x75 | \165 | 117 | 0x75 | \165 |
v | 118 | 0x76 | \166 | 118 | 0x76 | \166 | 118 | 0x76 | \166 | 118 | 0x76 | \166 | 118 | 0x76 | \166 |
w | 119 | 0x77 | \167 | 119 | 0x77 | \167 | 119 | 0x77 | \167 | 119 | 0x77 | \167 | 119 | 0x77 | \174 |
x | 120 | 0x78 | \170 | 120 | 0x78 | \170 | 120 | 0x78 | \170 | 120 | 0x78 | \170 | 120 | 0x78 | \170 |
y | 121 | 0x79 | \171 | 121 | 0x79 | \171 | 121 | 0x79 | \171 | 121 | 0x79 | \171 | 121 | 0x79 | \171 |
z | 122 | 0x7A | \172 | 122 | 0x7A | \172 | 122 | 0x7A | \172 | 122 | 0x7A | \172 | 122 | 0x7A | \172 |
{ | 123 | 0x7B | \173 | 123 | 0x7B | \173 | 123 | 0x7B | \173 | 123 | 0x7B | \173 | 123 | 0x7B | \173 |
| | 124 | 0x7C | \174 | 124 | 0x7C | \174 | 124 | 0x7C | \174 | 124 | 0x7C | \174 | 124 | 0x7C | \174 |
} | 125 | 0x7D | \175 | 125 | 0x7D | \175 | 125 | 0x7D | \175 | 125 | 0x7D | \175 | 125 | 0x7D | \175 |
~ | 126 | 0x7E | \176 | 126 | 0x7E | \176 | 126 | 0x7E | \176 | 126 | 0x7E | \176 | 126 | 0x7E | \176 |
⌂ | 127 | 0x7F | \177 | 127 | 0x7F | \177 | 127 | 0x7F | \177 | 127 | 0x7F | \177 | 127 | 0x7F | \177 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
А | 208, 144 | 0xD0, 0x90 | \320\220 | 192 | 0xC0 | \300 | 128 | 0x80 | \200 | 225 | 0xE1 | \341 | 176 | 0xB0 | \260 |
Б | 208, 145 | 0xD0, 0x91 | \320\221 | 193 | 0xC1 | \301 | 129 | 0x81 | \201 | 226 | 0xE2 | \342 | 177 | 0xB1 | \261 |
В | 208, 146 | 0xD0, 0x92 | \320\222 | 194 | 0xC2 | \302 | 130 | 0x82 | \202 | 247 | 0xF7 | \367 | 178 | 0xB2 | \262 |
Г | 208, 147 | 0xD0, 0x93 | \320\223 | 195 | 0xC3 | \303 | 131 | 0x83 | \203 | 231 | 0xE7 | \347 | 179 | 0xB3 | \263 |
Д | 208, 148 | 0xD0, 0x94 | \320\224 | 196 | 0xC4 | \304 | 132 | 0x84 | \204 | 228 | 0xE4 | \344 | 180 | 0xB4 | \264 |
Е | 208, 149 | 0xD0, 0x95 | \320\225 | 197 | 0xC5 | \305 | 133 | 0x85 | \205 | 229 | 0xE5 | \345 | 181 | 0xB5 | \265 |
Ж | 208, 150 | 0xD0, 0x96 | \320\226 | 198 | 0xC6 | \306 | 134 | 0x86 | \206 | 246 | 0xF6 | \366 | 182 | 0xB6 | \266 |
З | 208, 151 | 0xD0, 0x97 | \320\227 | 199 | 0xC7 | \307 | 135 | 0x87 | \207 | 250 | 0xFA | \372 | 183 | 0xB7 | \267 |
И | 208, 152 | 0xD0, 0x98 | \320\230 | 200 | 0xC8 | \310 | 136 | 0x88 | \210 | 233 | 0xE9 | \351 | 184 | 0xB8 | \270 |
Й | 208, 153 | 0xD0, 0x99 | \320\231 | 201 | 0xC9 | \311 | 137 | 0x89 | \211 | 234 | 0xEA | \352 | 185 | 0xB9 | \271 |
К | 208, 154 | 0xD0, 0x9A | \320\232 | 202 | 0xCA | \312 | 138 | 0x8A | \212 | 235 | 0xEB | \353 | 186 | 0xBA | \272 |
Л | 208, 155 | 0xD0, 0x9B | \320\233 | 203 | 0xCB | \313 | 139 | 0x8B | \213 | 236 | 0xEC | \354 | 187 | 0xBB | \273 |
М | 208, 156 | 0xD0, 0x9C | \320\234 | 204 | 0xCC | \314 | 140 | 0x8C | \214 | 237 | 0xED | \355 | 188 | 0xBC | \274 |
Н | 208, 157 | 0xD0, 0x9D | \320\235 | 205 | 0xCD | \315 | 141 | 0x8D | \215 | 238 | 0xEE | \356 | 189 | 0xBD | \275 |
О | 208, 158 | 0xD0, 0x9E | \320\236 | 206 | 0xCE | \316 | 142 | 0x8E | \216 | 239 | 0xEF | \357 | 190 | 0xBE | \276 |
П | 208, 159 | 0xD0, 0x9F | \320\237 | 207 | 0xCF | \317 | 143 | 0x8F | \217 | 240 | 0xF0 | \360 | 191 | 0xBF | \277 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
Р | 208, 160 | 0xD0, 0xA0 | \320\240 | 208 | 0xD0 | \320 | 144 | 0x90 | \220 | 242 | 0xF2 | \362 | 192 | 0xC0 | \300 |
С | 208, 161 | 0xD0, 0xA1 | \320\241 | 209 | 0xD1 | \321 | 145 | 0x91 | \221 | 243 | 0xF3 | \363 | 193 | 0xC1 | \301 |
Т | 208, 162 | 0xD0, 0xA2 | \320\242 | 210 | 0xD2 | \322 | 146 | 0x92 | \222 | 244 | 0xF4 | \364 | 194 | 0xC2 | \302 |
У | 208, 163 | 0xD0, 0xA3 | \320\243 | 211 | 0xD3 | \323 | 147 | 0x93 | \223 | 245 | 0xF5 | \365 | 195 | 0xC3 | \303 |
Ф | 208, 164 | 0xD0, 0xA4 | \320\244 | 212 | 0xD4 | \324 | 148 | 0x94 | \224 | 230 | 0xE6 | \346 | 196 | 0xC4 | \304 |
Х | 208, 165 | 0xD0, 0xA5 | \320\245 | 213 | 0xD5 | \325 | 149 | 0x95 | \225 | 232 | 0xE8 | \350 | 197 | 0xC5 | \305 |
Ц | 208, 166 | 0xD0, 0xA6 | \320\246 | 214 | 0xD6 | \326 | 150 | 0x96 | \226 | 227 | 0xE3 | \343 | 198 | 0xC6 | \306 |
Ч | 208, 167 | 0xD0, 0xA7 | \320\247 | 215 | 0xD7 | \327 | 151 | 0x97 | \227 | 254 | 0xFE | \376 | 199 | 0xC7 | \307 |
Ш | 208, 168 | 0xD0, 0xA8 | \320\250 | 216 | 0xD8 | \330 | 152 | 0x98 | \230 | 251 | 0xFB | \373 | 200 | 0xC8 | \310 |
Щ | 208, 169 | 0xD0, 0xA9 | \320\251 | 217 | 0xD9 | \331 | 153 | 0x99 | \231 | 253 | 0xFD | \375 | 201 | 0xC9 | \311 |
Ъ | 208, 170 | 0xD0, 0xAA | \320\252 | 218 | 0xDA | \332 | 154 | 0x9A | \232 | 255 | 0xFF | \377 | 202 | 0xCA | \312 |
Ы | 208, 171 | 0xD0, 0xAB | \320\253 | 219 | 0xDB | \333 | 155 | 0x9B | \233 | 249 | 0xF9 | \371 | 203 | 0xCB | \313 |
Ь | 208, 172 | 0xD0, 0xAC | \320\254 | 220 | 0xDC | \334 | 156 | 0x9C | \234 | 248 | 0xF8 | \370 | 204 | 0xCC | \314 |
Э | 208, 173 | 0xD0, 0xAD | \320\255 | 221 | 0xDD | \335 | 157 | 0x9D | \235 | 252 | 0xFC | \374 | 205 | 0xCD | \315 |
Ю | 208, 174 | 0xD0, 0xAE | \320\256 | 222 | 0xDE | \336 | 158 | 0x9E | \236 | 224 | 0xE0 | \340 | 206 | 0xCE | \316 |
Я | 208, 175 | 0xD0, 0xAF | \320\257 | 223 | 0xDF | \337 | 159 | 0x9F | \237 | 241 | 0xF1 | \361 | 207 | 0xCF | \317 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
а | 208, 176 | 0xD0, 0xB0 | \320\260 | 224 | 0xE0 | \340 | 160 | 0xA0 | \240 | 193 | 0xC1 | \301 | 208 | 0xD0 | \320 |
б | 208, 177 | 0xD0, 0xB1 | \320\261 | 225 | 0xE1 | \341 | 161 | 0xA1 | \241 | 194 | 0xC2 | \302 | 209 | 0xD1 | \321 |
в | 208, 178 | 0xD0, 0xB2 | \320\262 | 226 | 0xE2 | \342 | 162 | 0xA2 | \242 | 215 | 0xD7 | \327 | 210 | 0xD2 | \322 |
г | 208, 179 | 0xD0, 0xB3 | \320\263 | 227 | 0xE3 | \343 | 163 | 0xA3 | \243 | 199 | 0xC7 | \307 | 211 | 0xD3 | \323 |
д | 208, 180 | 0xD0, 0xB4 | \320\264 | 228 | 0xE4 | \344 | 164 | 0xA4 | \244 | 196 | 0xC4 | \304 | 212 | 0xD4 | \324 |
е | 208, 181 | 0xD0, 0xB5 | \320\265 | 229 | 0xE5 | \345 | 165 | 0xA5 | \245 | 197 | 0xC5 | \305 | 213 | 0xD5 | \325 |
ж | 208, 182 | 0xD0, 0xB6 | \320\266 | 230 | 0xE6 | \346 | 166 | 0xA6 | \246 | 214 | 0xD6 | \326 | 214 | 0xD6 | \326 |
з | 208, 183 | 0xD0, 0xB7 | \320\267 | 231 | 0xE7 | \347 | 167 | 0xA7 | \247 | 218 | 0xDA | \332 | 215 | 0xD7 | \327 |
и | 208, 184 | 0xD0, 0xB8 | \320\270 | 232 | 0xE8 | \350 | 168 | 0xA8 | \250 | 201 | 0xC9 | \311 | 216 | 0xD8 | \330 |
й | 208, 185 | 0xD0, 0xB9 | \320\271 | 233 | 0xE9 | \351 | 169 | 0xA9 | \251 | 202 | 0xCA | \312 | 217 | 0xD9 | \331 |
к | 208, 186 | 0xD0, 0xBA | \320\272 | 234 | 0xEA | \352 | 170 | 0xAA | \252 | 203 | 0xCB | \313 | 218 | 0xDA | \332 |
л | 208, 187 | 0xD0, 0xBB | \320\273 | 235 | 0xEB | \353 | 171 | 0xAB | \253 | 204 | 0xCC | \314 | 219 | 0xDB | \333 |
м | 208, 188 | 0xD0, 0xBC | \320\274 | 236 | 0xEC | \354 | 172 | 0xAC | \254 | 205 | 0xCD | \315 | 220 | 0xDC | \334 |
н | 208, 189 | 0xD0, 0xBD | \320\275 | 237 | 0xED | \355 | 173 | 0xAD | \255 | 206 | 0xCE | \316 | 221 | 0xDD | \335 |
о | 208, 190 | 0xD0, 0xBE | \320\276 | 238 | 0xEE | \356 | 174 | 0xAE | \256 | 207 | 0xCF | \317 | 222 | 0xDE | \336 |
п | 208, 191 | 0xD0, 0xBF | \320\277 | 239 | 0xEF | \357 | 175 | 0xAF | \257 | 208 | 0xD0 | \320 | 223 | 0xDF | \337 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
р | 209, 128 | 0xD1, 0x80 | \321\200 | 240 | 0xF0 | \360 | 224 | 0xE0 | \340 | 210 | 0xD2 | \322 | 224 | 0xE0 | \340 |
с | 209, 129 | 0xD1, 0x81 | \321\201 | 241 | 0xF1 | \361 | 225 | 0xE1 | \341 | 211 | 0xD3 | \323 | 225 | 0xE1 | \341 |
т | 209, 130 | 0xD1, 0x82 | \321\202 | 242 | 0xF2 | \362 | 226 | 0xE2 | \342 | 212 | 0xD4 | \324 | 226 | 0xE2 | \342 |
у | 209, 131 | 0xD1, 0x83 | \321\203 | 243 | 0xF3 | \363 | 227 | 0xE3 | \343 | 213 | 0xD5 | \325 | 227 | 0xE3 | \343 |
ф | 209, 132 | 0xD1, 0x84 | \321\204 | 244 | 0xF4 | \364 | 228 | 0xE4 | \344 | 198 | 0xC6 | \306 | 228 | 0xE4 | \344 |
х | 209, 133 | 0xD1, 0x85 | \321\205 | 245 | 0xF5 | \365 | 229 | 0xE5 | \345 | 200 | 0xC8 | \310 | 229 | 0xE5 | \345 |
ц | 209, 134 | 0xD1, 0x86 | \321\206 | 246 | 0xF6 | \366 | 230 | 0xE6 | \346 | 195 | 0xC3 | \303 | 230 | 0xE6 | \346 |
ч | 209, 135 | 0xD1, 0x87 | \321\207 | 247 | 0xF7 | \367 | 231 | 0xE7 | \347 | 222 | 0xDE | \336 | 231 | 0xE7 | \347 |
ш | 209, 136 | 0xD1, 0x88 | \321\210 | 248 | 0xF8 | \370 | 232 | 0xE8 | \350 | 219 | 0xDB | \333 | 232 | 0xE8 | \350 |
щ | 209, 137 | 0xD1, 0x89 | \321\211 | 249 | 0xF9 | \371 | 233 | 0xE9 | \351 | 221 | 0xDD | \335 | 233 | 0xE9 | \351 |
ъ | 209, 138 | 0xD1, 0x8A | \321\212 | 250 | 0xFA | \372 | 234 | 0xEA | \352 | 223 | 0xDF | \337 | 234 | 0xEA | \352 |
ы | 209, 139 | 0xD1, 0x8B | \321\213 | 251 | 0xFB | \373 | 235 | 0xEB | \353 | 217 | 0xD9 | \331 | 235 | 0xEB | \353 |
ь | 209, 140 | 0xD1, 0x8C | \321\214 | 252 | 0xFC | \374 | 236 | 0xEC | \354 | 216 | 0xD8 | \330 | 236 | 0xEC | \354 |
э | 209, 141 | 0xD1, 0x8D | \321\215 | 253 | 0xFD | \375 | 237 | 0xED | \355 | 220 | 0xDC | \334 | 237 | 0xED | \355 |
ю | 209, 142 | 0xD1, 0x8E | \321\216 | 254 | 0xFE | \376 | 238 | 0xEE | \356 | 192 | 0xC0 | \300 | 238 | 0xEE | \356 |
я | 209, 143 | 0xD1, 0x8F | \321\217 | 255 | 0xFF | \377 | 239 | 0xEF | \357 | 209 | 0xD1 | \321 | 239 | 0xEF | \357 |
UTF-8 | Win-1251 | CP-866 | KOI-8R | ISO-8859-5 | |||||||||||
Ё | 208, 129 | 0xD0, 0x81 | \320\201 | 168 | 0xA8 | \250 | 240 | 0xF0 | \360 | 179 | 0xB3 | \263 | 161 | 0xA1 | \241 |
ё | 209, 145 | 0xD1, 0x91 | \321\221 | 184 | 0xB8 | \270 | 241 | 0xF1 | \361 | 163 | 0xA3 | \243 | 241 | 0xF1 | \361 |
В данной таблице символов указаны сразу 5 кодировок: «UTF-8», «Windows-1251», «CP-866», «KOI-8R» и «ISO-8859-5». Коды символов от 0 до 127 совпадают для всех кодировок. В кодировке «UTF-8» символы Кириллицы занимают 2 байта, следовательно, для них указано 2 числа.
Стоит отметить кодировку «KOI-8R» в которой (в отличии от остальных) на первый взгляд не просматривается закономерность следования кодов, но на самом деле закономерность есть и заключается она в том, что если сбросить старший бит, то код символа Кириллицы превратится в код сходного по произношению символа латиницы, и наоборот. Например символ «л» записывается кодом 0xCC, если сбросить старший бит то получится 0x4C, а это код символа «L». Значит, если в тексте из символов Кириллицы сбросить старшие биты кода каждого символа, то получится «читаемый» текст из символов латиницы, подобный транслиту.
Примечание:
К недостаткам записи строк кодами символов относится то, что строки в скетче становятся не удобочитаемыми. В качестве альтернативного варианта можно создать функцию преобразования кодировки строк перед их выводом, или хранить строки из символов Кириллицы в отдельном, подключаемом, файле, который будет сохранён в требуемой для вывода кодировке.
Обсуждение