Вопрос о кириллице в памяти ардуины.

Тема в разделе "Arduino & Shields", создана пользователем Ariadna-on-Line, 27 мар 2025 в 15:34.

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Боюсь что тема древнее вселенной, прошу тапками не кидаться.
    Вписываю в код тексты на кириллице занимает 2байта на знак. И в код под них же "дешифратор" utf8rus(). А зачем ? Разве нет способа прогнать их сквозь дешифратор по ходу компилирования, и уже готовое скормить компилятору. Съэкономится место вдвое и время. Или я чего-то не понимаю ? С уважением.
     
    Последнее редактирование: 27 мар 2025 в 15:39
  2. parovoZZ

    parovoZZ Гуру

    Ответ очень простой - ASCII кодировка гораздо проще и меньше занимает памяти, даже если это UTF8. Но ASCII кодировка требует аккуратности - таблицы ввода-вывода должны совпадать.
     
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну и ? С чего начинать ? Изменить какие-то настройки АрдуиноIDE ?
     
  4. AlexU

    AlexU Гуру

    Начать с того, что узнать какие кодировки поддерживает тот дисплей, на который Вы выводите строки (который отвечает за отображение строк).
    Потом посмотреть какие кодировки можно настроить в Вашей операционной системе. Судя по Вашему высказыванию, что символ кириллицы занимает 2 байта, можно сделать вывод, что в Вашей системе используется UTF-8. Менять кодировку операционной системы не желательно, словите кучу проблем.
    В Arduino IDE нет настроек кодировки для файлов (может у меня версия старая, посмотрите настройки в своей IDE).
    Второй вариант использовать другую IDE (например, на основе Eclipse), где есть возможность задавать кодировки для конкретных файлов. Хотя разные кодировки для файлов могут доставить проблемы в будущем.
    Простого ответа на Ваши вопросы нет...
     
  5. AlexU

    AlexU Гуру

    С чего вдруг там ASCII? Может там CP-1251, CP866, KOI8-R или ещё какая?
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Дисплея у меня нет. Вывод идет на тупые СД матрицы 8х8. Перекодировку делает широко-известная функция :
    Код (Text):

    // Функция перекодировки русских букв из UTF-8 в Win-1251
    String utf8rus(String source) {
     
    Короче я понял - дело мутное.
     

    Вложения:

    • фонт.png
      фонт.png
      Размер файла:
      12 КБ
      Просмотров:
      9
    Последнее редактирование: 28 мар 2025 в 20:00
  7. parovoZZ

    parovoZZ Гуру

    всё это и есть названия ASCII таблиц.

    Microchip Studio использует Win-1251 (если не изменяет память) для кириллицы, дуринаIDE - UTF (системную)
     
  8. Asper Daffy

    Asper Daffy Иксперд

    Конечно, есть.

    Оно, конечно, ХЗ что имеется в виду под "прогнать и скормить", но вот здесь, например, на этапе компиляции считаются реальные (в буквах) длины строк. Если надо перекодировать, то это тоже можно. Техника та же самая.