База знаний · Ошибки и решения
Ошибка stray: невидимые русские символы в коде
Классика после копирования из Word: «умные» кавычки, тире и русские буквы ломают сборку.
Скопировали код из методички, документа Word или мессенджера — и сборка рассыпалась с ошибками вида «stray …» на десятках строк? В код попали невидимые «не те» символы. Это одна из самых пугающих на вид и самых простых по сути ошибок.
Откуда берётся stray
Компилятор понимает только простые английские символы кода. А текстовые редакторы и мессенджеры любят «украшать» текст: прямые кавычки " превращают в «ёлочки» или “фигурные”, дефис — в длинное тире, а рядом с кодом легко оказывается русская буква «с» вместо английской «c» — на глаз они неотличимы. Компилятор натыкается на такой символ и сообщает «stray»: посторонний знак в строке.
Классика жанра. Найдите отличие между двумя вызовами — на глаз оно неразличимо:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // эта строка написана правильно
delay(500);
digitalWritе(13, LOW); // а здесь в digitalWrite русская «е»
delay(500);
}
В восьмой строке буква «е» русская. Компилятор говорит об этом тремя сообщениями сразу: error: stray '\320' in program, error: stray '\265' in program и error: 'digitalWrit' was not declared in this scope. Обратите внимание на последнее: имя оборвалось на digitalWrit — ровно там, где началась чужая буква. Это и есть самая надёжная примета.
А теперь посмотрите на сам листинг выше ещё раз — и вы увидите ответ глазами, до всякой сборки: правильный digitalWrite в шестой строке оранжевый, а сломанный в восьмой остался чёрным. Подсветка красит только те слова, которые узнала; чёрная команда посреди оранжевых — готовый указатель на опечатку.
Как найти и убрать
- Кликните по карточке ошибки — Trema IDE перенесёт вас к строке с посторонним символом.
- Присмотритесь к кавычкам и тире: «ёлочки» и длинные тире в коде нужно заменить на прямые
"и обычный минус. - Если строка выглядит нормально — сотрите её целиком и наберите заново руками: невидимый символ исчезнет вместе со старой строкой.
- Соберите снова. Ошибок stray станет меньше — повторяйте.

Важно: русские комментарии — можно!
Не путайте: русский текст в комментариях (после // или между /* и */) совершенно безопасен — компилятор комментарии пропускает. Все встроенные примеры Trema IDE прокомментированы по-русски, и это не мешает сборке. Ошибку вызывают только русские символы и «умная» типографика в самом коде: в командах, именах и кавычках строк.
Как избегать
- Копируйте код из источников, которые хранят его как код: встроенные примеры Trema IDE, страницы с блоками кода. Word и мессенджеры — зона риска.
- После вставки взгляните на кавычки: в коде они должны быть прямыми.
Другие типовые сообщения компилятора разобраны на странице «Ошибки: как читать и чинить».
Частые вопросы
Почему в комментариях русский текст не мешает?
Комментарии компилятор пропускает — там русский язык безопасен и даже полезен. Ошибку вызывают только русские символы в самом коде: в командах, кавычках и знаках.
Читайте также
Обновлено: 19 июля 2026
