Кодировка компилятора
- Войдите на сайт для отправки комментариев
Вс, 28/02/2016 - 20:54
Приветствую. Подскажите как бороться с кодировкой IDE
Arduino.
Если обьявлять массив символов и записывать посимвольно русские буквы - все получается нормально. А если присвоить сразу строку русскую, то компилятор начинает творить хрень - между символами еще код вставлять. итого "Привет" вместо 7 байт занимает 13.
char a[13]="Привет";
char b[7]={'П','р','и','в','е','т',0} ;
На порт вывел значения, что хранятся в массивах a и b:
-48
-97
-47
-128
-48
-72
-48
-78
-48
-75
-47
-126
-----
-97
-128
-72
-78
-75
-126
(Получается через символ вставляет код то -48 то -47).
Как кодировку поменять компилятора?
"Кодировка компилятора" - это сильно! К заявлениям типа "if не работает" уже как-то привык - рутина, а тут, поэзия можно сказать :)
Сгинь троль.
В теме написано про ide arduino.
А если сказать нечего, ....
Брехать - не мешки ворочать. В теме написано:
Или что-то другое?
Да и заголовок тоже никто не отменял. Так что сам сгинь.
Откройте ino-файл в notepad++ и посмотрите какая у него кодировка в статус строке. Такое может быть из-за кодировки текстового файла.
Вот ещё кое-что по теме.
И ещё, у компилятора действительно есть кодировки. Специальными ключами можно указывать комплятору, например, в какой кодировке входные файлы. Большинство современных компиляторов имеют такие ключи. Вы можете даже писать идентификаторы в unicode, т.е. по-русски например. Не знаю точно реализована ли такая возможности именно в avr gcc, но для gcc наверняка можно так делать.
Обычно эти ключи используют для работы со строками. Чтобы не писать функции перекодирования специально для строк можно написать весь файл в нужно кодировке и указать её компилятору. Тогда, если вы писали в CP1251, то в прошивке будут коды из этой кодовой таблицы, если UTF-8 - из этой.
Благодарю добрый человек) Попробовал с Notepad++. Поменял на 1251, так ардуино даже 1 раз скомпилила, а после компиляции исправила на UTF-8 и снова стала бить ошибку о размере массива.
в файле Preference.txt arduino поменял параметр preproc.substitute_unicode=false - не помогло.
Как бы можно написать функцию, которая преобразовывает в однобайтовую нужную мне кодировку. НО. Есть НО. Мало у меня памяти осталось под переменные, программа довольно большая, и пошла у меня борьба за каждый байт для переменных.
Может посоветуете другой IDE под ардуино, посолиднее чем Arduino да с кодировкой cp-1251???
Если обьявлять массив символов и записывать посимвольно русские буквы - все получается нормально.
Я именно так и делаю. Это оказалось самым "гуманным" способом. Ардуино ИДЕ - не "любой современный компиллятор". Борьбе с ним, включая данный вопрос, на форуме посвящено множество тем. Победоносных результатов я не видел.
Дело не в IDE, а в параметрах сборки. На самом деле можно использовать любой редактор, а собирать можно из командной строки.
Я недавно написал статью о том как собирать скетчи без IDE Arduino, но с использованием Arduino Framework (набор классов).
Я сам собираю в Notepad++.
Можно ещё попробовать поставить галочку в настройках "Использовать внешний редактор" и скомпилировать. Возможно тогда IDE работает только как просмотрщик и не изменяет кодировку (не пробовал).
Попробуйте http://arduino.ru/forum/obshchii/arduino-ide-i-kodirovka-iskhodnikov , возможно вам подойдет, но оно для версии 1.0.5.
Решение для библиотеки Adafruit-GFX (можно применить и для других библиотек):
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...