TFT 2.4, Русский шрифт и UTF-8

Тема в разделе "Arduino & Shields", создана пользователем alexweld, 5 окт 2014.

  1. alexweld

    alexweld Нуб

    Друзья, нужна помощь!

    Экран тфт-тач на ST7781, библиотека к нему.
    Все работает отлично… кроме кириллицы. Переделал glcdfont.c- добавил недостающие кириллические символы. Латиница выводится нормально, а вот перед русскими буквами появляется непонятный символ, а затем уже сама буква. Я так понял ардуино ИДЕ работает в UTF-8, а там латинский символ - 1 байт, русский -2 байта. Вот русская буква и занимает два знакоместа, точнее в начале непонятный знак, а следом нормальная буква.

    Строка скетча, к примеру: tft.println("ФЫВА QWERT!"); приобретает в файле *.cpp (TEMP/build***) вид tft.println("\u0424\u042b\u0412\u0410 QWERT!"); и в таком виде компилируется.

    Вопрос - кто виноват и что с этой фигней делать?
     
  2. geher

    geher Гуру

    Виновато разнообразие кодировок, а делать либо функцию перекодирования, либо текстовые константы в виде последовательности кодов символов используемых дисплеем.
     
  3. alexweld

    alexweld Нуб

    Может как-то первый байт отрезать и выводить только второй (одним байтом, как латиница). Проблема в том, как убрать символ который выводится в нагрузку к нормальной букве. Получается на экране типа: |`;Ф|`;Ы|`;В|`;А . Занимают два знакоместа. Вот эту, условно « |`;» - убрать и всё было бы хорошо. Сильно не пинайте, я – нуб, как и написано в подписи. ;)