MiklPolikov 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Устройство должно создавать на SD карте текстовые файлы с русским текстом. В Keil MDK 5.14 задаю строковую константу "АБВГД". Кейл компилирыет её как D0 90 D0 91 D0 92 D0 93 D0 94 В то же время, если я в Windows создаю текстовый файл c текстом АБВГД, то его содержимое C0 C1 C2 C3 C4 Вопрос: как сделать так, что бы Кейл при компиляции создавал из "АБВГД" C0 C1 C2 C3 C4 ? Подробнее: Текстовый файл с содержимым D0 90 D0 91 D0 92 D0 93 D0 94 в Windows открывается корректно. Но если его в Windows пересохранить, то в его начало почему-то добавляется EF BB BF А уже эти EF BB BF , при следующем открытии на некоторых компьютерах с древними Windows, превращают текст в "крякозябры". Заранее спасибо за совет ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Так это у вас unicode шрифт выбран в настройках. А чтобы нормально ANSI шрифт рисовался, нужно UvEdit.dll подменить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Так это у вас unicode шрифт выбран в настройках. А чтобы нормально ANSI шрифт рисовался, нужно UvEdit.dll подменить. Объясните пожалуйста подробнее, что именно нужно сделать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Про кодировки текста ничего не слышали? Windows-1251? UTF-8? Не знаю, как там в кейловском текстовом редакторе, но в нормальном редакторе можно задать кодировку по выбору. Выберите Windows-1251, чтобы было по 1 байту на букву, и скажите компилятору, что исходник именно в этой кодировке. Если, конечно, компилятор не настолько туп, что не понимает разные кодировки. Точно знаю, что gcc понимает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Не знаю, как там в кейловском текстовом редакторе, Нужен совет того, кто знает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Объясните пожалуйста подробнее, что именно нужно сделать ? Вот здесь усё... Rus_font_dll.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Я уж думал в наши дни никого кодировками не удивить. А тут вон оно что... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Сделал всё что было написано в архиве, и ничего не изменилось: 1) Запустил файл FontSubstitutes.reg , увидел сообщение " ... успешно внесены в реестр" 2) Перезагрузил компьютер. ( windows 8) 3) Заменил в папке файл с / keil_v5 / UV4 файл UvEdit.dll В кейле, вот в этом меню, от выбора кодировки почему-то ничего не меняется. Как будто кейл игнорирует эту настройку. Какие будут предложения ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба ...Какие будут предложения ? проверить на создании нового файла исходников. Не всегда настройка в сетупе среды есть фаза записи. Зачастую это фаза создания. Это собственно и корректное поведение. В какой кодировке был создан файл - в такой и будет дальше пытаться поддерживаться (принцип "не навреди"). Либо перезапишите исходный файлик программкой которая тупо запишет как бинарный выход (нотепад к примеру, очистив первые байты заголовок BOM). Можно заюзать нотепад++ но тут бывают нюансы. Бывает его глючит. Он вроде как пишет кодировку одну, а записывает совсем другую. Спасает внимательность - если в первой позиции файла поставить курсор и нажать стрелку вправо - то при глюке ничего не произойдёт(скрытый байт). Если всё нормально - курсор переместиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 3 апреля, 2015 Опубликовано 3 апреля, 2015 · Жалоба Спасибо всем ответившим ! Уже написал функцию-костыль, для перекодировки того что выдаёт Кейл в то что понимает Windows . Когда перестанет работать - попробую то что предложил kolobok0 //////////////////////////////////прибавляем строку к строке///////////////////////////////// // *sum строка - результат // *add исходная строка void STRING_TO_STRING(unsigned char *sum, unsigned char *add) { int i,j; unsigned char x; unsigned char previous_x=0; j=0; i=0; while(i<SD_DATA_SIZE) { if(add[j]==0) break; x=add[j]; if((x!=0xD0) && (x!=0xD1)) { if((x>=0x90) && (previous_x==0xD0)) /// буквы абвгдАБВГД и т.п. x+=0x30; if((x>=0x80) && (previous_x==0xD1)) // буквы фычшщФЫЧШЩ и тп. x+=0x70; sum[i]=x; i++; } previous_x=x; j++; } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться