MementoMori 4 16 мая, 2020 Опубликовано 16 мая, 2020 · Жалоба Господа, проблема с русскими буквами в Keil общеизвестна и легко решается. Я после установки сделал все как прописано - у меня в редакторе русские буквы, все нормально. Но вот в touchGFX с этим проблема. Русские тексты, вставленные в редакторе TOuchGFXDesigner, отображаются нормально. А вот если русский текст набирать ручками в KEIL и грузить из чего-то вроде const char* MenuItemList[10] = {"Элемент1","Элемент2","Элемент3"}; То отображаются вопросики. Как побороть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 16 мая, 2020 Опубликовано 16 мая, 2020 · Жалоба 2 часа назад, MementoMori сказал: Как побороть? Разбирайтесь, в каких кодировках кодирует кейл, под виндой скорее всего 1251, а TOuchGFXDesigner может использовать модный юникод... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 16 мая, 2020 Опубликовано 16 мая, 2020 · Жалоба Так поставьте в Keil UTF-8 и проверьте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 16 мая, 2020 Опубликовано 16 мая, 2020 · Жалоба 22 minutes ago, x893 said: Так поставьте в Keil UTF-8 и проверьте. Может стать забавно. В редакторе все хорошо показывает, а строки в два раза длиннее в байтах становятся и на индикатор всякая ерунда идет в железе. Избегал этого усложнением сборки проекта. Все строковые значения из проекта собирал в один файл. У меня был gcc+make+eclipse. В makefile была добавлена цель, которая этот файл до компиляции из UTF-8 в CP1251 конвертировала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба 10 hours ago, x893 said: Так поставьте в Keil UTF-8 и проверьте. Спасибо, Кэп! Еще вчера поставил. Найдете на картинке результат набора русских букв с клавиатуры и результат отображения на экране? Слазил еще раз в папку установки Keil. ОБнаружил там альетрнативный UVEdit.dll В редакторе все стало на места, в TouchGFX - нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба Насильственно перекодировал файл в UTF-8, открыл его в KEIL - русские буквы в норме, а вот в итоговом приложении - знаки вопроса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба 3 hours ago, MementoMori said: Насильственно перекодировал файл в UTF-8, открыл его в KEIL - русские буквы в норме, а вот в итоговом приложении - знаки вопроса. В какой кодировке TOuchGFXDesigner сохраняет ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба 48 minutes ago, x893 said: В какой кодировке TOuchGFXDesigner сохраняет ? Хехе))) Как же я ждал этого вопроса)))) Вот в такой: TEXT_LOCATION_FLASH_PRAGMA KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE = { 0x423, 0x43f, 0x440, 0x430, 0x432, 0x43b, 0x435, 0x43d, 0x438, 0x435, 0x2, 0x0, // @0 "??????????<>" 0x41e, 0x442, 0x43a, 0x43b, 0x44e, 0x447, 0x438, 0x442, 0x44c, 0x20, 0x43c, 0x43e, 0x442, 0x43e, 0x440, 0x44b, 0x0, // @12 "????????? ??????" 0x413, 0x41b, 0x410, 0x412, 0x41d, 0x42b, 0x419, 0x20, 0x42d, 0x41a, 0x420, 0x410, 0x41d, 0x0, // @29 "??????? ?????" 0x42d, 0x43a, 0x441, 0x442, 0x440, 0x443, 0x434, 0x435, 0x440, 0x20, 0x31, 0x0, // @43 "????????? 1" 0x42d, 0x43a, 0x441, 0x442, 0x440, 0x443, 0x434, 0x435, 0x440, 0x20, 0x32, 0x0, // @55 "????????? 2" 0x422, 0x415, 0x41c, 0x41f, 0x415, 0x420, 0x410, 0x422, 0x423, 0x420, 0x410, 0x0, // @67 "???????????" 0x422, 0x435, 0x43c, 0x43f, 0x435, 0x440, 0x430, 0x442, 0x443, 0x440, 0x430, 0x0, // @79 "???????????" 0x423, 0x43f, 0x440, 0x430, 0x432, 0x43b, 0x435, 0x43d, 0x438, 0x435, 0x0, // @91 "??????????" 0x41d, 0x430, 0x20, 0x434, 0x438, 0x441, 0x43f, 0x43b, 0x435, 0x435, 0x0, // @102 "?? ???????" 0x42d, 0x43a, 0x441, 0x442, 0x440, 0x443, 0x434, 0x435, 0x440, 0x44b, 0x0, // @113 "??????????" 0x41e, 0x441, 0x442, 0x430, 0x43b, 0x43e, 0x441, 0x44c, 0x3a, 0x0, // @124 "????????:" 0x41d, 0x430, 0x441, 0x442, 0x440, 0x43e, 0x439, 0x43a, 0x438, 0x0, // @134 "?????????" 0x41d, 0x430, 0x20, 0x43f, 0x43b, 0x430, 0x442, 0x435, 0x0, // @144 "?? ?????" 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @153 "New Text" 0x41f, 0x415, 0x427, 0x410, 0x422, 0x42c, 0x0, // @162 "??????" 0x41f, 0x435, 0x447, 0x430, 0x442, 0x44c, 0x0, // @169 "??????" 0x414, 0x430, 0x442, 0x447, 0x438, 0x43a, 0x0, // @176 "??????" 0x421, 0x442, 0x43e, 0x43b, 0x438, 0x43a, 0x0, // @183 "??????" 0x30, 0x33, 0x3a, 0x35, 0x30, 0x0, // @190 "03:50" 0x414, 0x418, 0x421, 0x41a, 0x418, 0x0, // @196 "?????" 0x2d, 0x30, 0x2e, 0x31, 0x0, // @202 "-0.1" 0x2b, 0x30, 0x2e, 0x31, 0x0, // @207 "+0.1" 0x2b, 0x31, 0x30, 0x0, // @212 "+10" 0x2d, 0x31, 0x30, 0x0, // @216 "-10" 0x2b, 0x31, 0x0, // @220 "+1" 0x2d, 0x31, 0x0 // @223 "-1" }; Он тупо сообщает компилятору куда и какие коды писать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба 25 minutes ago, MementoMori said: Хехе))) Как же я ждал этого вопроса)))) Хехе ))) Как же я жду этого ответа ))) Использовали UTF16 ? 0x423, 0x43f, 0x440, 0x430, 0x432, 0x43b, 0x435, 0x43d, 0x438, 0x435, 0x2, 0x Управление Всё элементарно профессор Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба 4 hours ago, x893 said: Хехе ))) Как же я жду этого ответа ))) Использовали UTF16 ? 0x423, 0x43f, 0x440, 0x430, 0x432, 0x43b, 0x435, 0x43d, 0x438, 0x435, 0x2, 0x Управление Всё элементарно профессор Нет, использовал UTF8 Пробовал сохранять в UTF-16 - лабуда. Кстати, на один символ из константы приходится 2 знака вопроса в итоговом тексте. Я понимаю, что это как-то связано с UTF8/16, но не пойму что нужно сделать. Я понимаю, что вы с моими кодами сделали некую операцию, но мне хочется набирать в редакторе текст и чтобы он попадал в TouchGFX в нормальном виде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба Есть в TouchGFX такая штука Я сделал вот что Unicode::UnicodeChar buffer[20]; uint8_t buffer2[20]; Unicode::strncpy(buffer, MenuItemList[data], 20); //копируем константу из флеши в буфер Unicode::toUTF8(buffer, buffer2,20);// конвертируем в UTF-8 и пмещаетм в buffer2 Unicode::snprintf(OptionsMenuItemtextAreaBuffer, 20, "%s", buffer2);// в итоговый буфер помещаем текст в UTF-8 Это корежит даже латиницу. А.... почему вы решили, что должно быть в UTF-8? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 17 мая, 2020 Опубликовано 17 мая, 2020 · Жалоба Я про UTF8 слова не говорил. По приведенному выше коду, если сделать конвертацию из UTF16, то получится текст Управление. Так как не все компиляторы понимают строки в UTF16 они сохраняют текст в виде хекс констант 0x4... Далее рассуждаем логически. Вы делаете текст в CP1251, компилятор делает массив байт в этой кодировке. Перед тем как отображать вы должны переделать его в UTF16 Если делаете текст в UTF-8 точно также - сначала в UTF16, потом вывод. попробуйте написать у себя в коде строку в виде message = u"Hello-Привет"; (в кодировках файла CP1251, UTF8, UTF16) и посмотрите во что конкретно она превратится в каждой из кодировок. Удачи ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 18 мая, 2020 Опубликовано 18 мая, 2020 (изменено) · Жалоба 16 часов назад, MementoMori сказал: Нет, использовал UTF8 Пробовал сохранять в UTF-16 - лабуда. Лабуда- не лабуда, а сохранил он именно в UTF-16... А проблема скорее всего в том, что кейл сохраняет в том формате(UTF-16), который отрисовщик текста не понимает, вот и лабуда получается... Т.е. вам нужно узнать, какой формат понимает именно сама либа, т.к. "Русские тексты, вставленные в редакторе TOuchGFXDesigner, отображаются нормально" - смотрите вчем он и сохраняет, и как поймете, пытайтесь выставить это в кейле. ЗЫ. Как раньше было здорово - всего-то CP-866 и 1251, проверил одну, нет - значит другая, сегодня поднатянуло линуксоидов со своим зоопарком, юникодщиков-интернетчиков, и появилось непролазное болото... Изменено 18 мая, 2020 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 18 мая, 2020 Опубликовано 18 мая, 2020 · Жалоба 22 hours ago, MementoMori said: Есть в TouchGFX такая штука Я сделал вот что Unicode::UnicodeChar buffer[20]; uint8_t buffer2[20]; Unicode::strncpy(buffer, MenuItemList[data], 20); //копируем константу из флеши в буфер Unicode::toUTF8(buffer, buffer2,20);// конвертируем в UTF-8 и пмещаетм в buffer2 Unicode::snprintf(OptionsMenuItemtextAreaBuffer, 20, "%s", buffer2);// в итоговый буфер помещаем текст в UTF-8 Это корежит даже латиницу. А.... почему вы решили, что должно быть в UTF-8? Что даёт fromUTF8 перед выводом на экран ? Может книгу прочитать ? TouchGfx за 24 часа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 19 мая, 2020 Опубликовано 19 мая, 2020 · Жалоба On 5/18/2020 at 12:21 AM, x893 said: message = u"Hello-Привет"; В Keil не прокатило: char text[20]=u"SSS"; ../touchgfx/gui/src/containers/optionsmenuscrollistcontainer.cpp(24): error: #20: identifier "u" is undefined Какую-то библиотеку надо подключить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться