Форум РадиоКот • Просмотр темы - перекодировки с UTF-8 в Windows1251
Сообщения без ответов | Активные темы
Страница 2 из 4
[ Сообщений: 70 ]
, , ,
Автор
Сообщение
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:00:35
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
AlexS4 , ни что не надо преобразовывать, это neid мозги парит себе и людям. Судя по font6x8.cpp буковки от А до я стоят на своих местах..
ну я себе парю ладно, вам то мне зачем это делать?))
Код:
int utf8_rus(char* dest, const unsigned char* src) { unsigned int i, j; for ( i =0, j=0; src[i]; i++) { if (src[i] >= 0x90) { dest[++j] = src[i] + 0x2F; //D0 c 144 по 191 } else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x6F; //D1 с 128 по 143 } else {dest[++j] = src[i];} } if (src[i]== 0x91) { dest[++j] = 0xB7;} //Ё if (src[i]== 0x81) { dest[++j] = 0xA8;} //ё code=src[i]; code2=dest[j]; itoa(code, buffer_USART, 10); USART_sendLine(buffer_USART); USART_sendLine(" , "); itoa(code2, buffer_USART, 10); USART_sendLine(buffer_USART); USART_sendLine("\n\r"); } //end for dest[j] ='\0'; return j; } /---------- код--------------- const unsigned char m[] = "АБВрст"; // исходная строчка кириллицей char k[10]; // сюда будем записывать результат перекодировки utf8_rus(k,m);
вывод в терминале, вот откуда я их взял
Код:
208 , 255 - 0xDO 144 , 191 - 191 = А или Win-1251 208 , 255 0xDO 145 , 183 183, т.к. if (src[i]== 0x81) { dest[++j] = 0xA8;} //ё 208 , 255 0xD0 146 , 193 В 209 , 0 0xD1 128 , 239 р 209 , 0 0xD1 129 , 168 c 168, т.к. if (src[i]== 0x91) { dest[++j] = 0xB7;} //Ё а не 192 209 , 0 0xD1 130 , 241 т
Я так понимаю с ними надо бороться.
AlexS4 , если он полностью проект выложит - может тогда еще гляну. А так пусть пишет в соответствующий раздел форума.
Надо будет выложу, объясните мне вот выше сказанное мной. Там переделок минималка. Я не на что не претендую, пишу код для себя и под свои нужды, поделка для себя, стесняться мне не чего.
Последний раз редактировалось neid Сб сен 25, 2021 21:33:19, всего редактировалось 1 раз.
Вернуться наверх
Реклама
slav0n
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:15:24
Опытный кот
Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15Сообщений: 882Откуда: Харьков
Рейтинг сообщения: 0
neid писал(а):
Выложу библиотеку шрифта!
такой шрифт и для AVR... не, нафиг-нафиг
Нормальный шрифт 6х8 помещается в 5 байт на символ и выглядит крупнее.
neid писал(а):
К примеру TV. print(0,12,"Я балбес!")
это делается примерно так:
Код:
TV. print(0,12,PSTR("Я балбес!"));
_________________ ohmycode! primuss3.com
Вернуться наверх
Реклама
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:26:48
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
Это все что касается вывода строк в этой библиотеке
Вернуться наверх
Реклама
Dimon456
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:39:33
Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54Сообщений: 1849
Рейтинг сообщения: 0
neid , и что у тебя на это
Код:
TV. print(0,12,"Я балбес!")
всего один символ выводится?
Вернуться наверх
Реклама
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Подробнее>>
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:45:12
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
neid , и что у тебя на это
Код:
TV. print(0,12,"Я балбес!")
всего один символ выводится?
Не один, строка кракозябр... что то типа "P P P P P P P!" жаль нет с собой шнурка с тюльпанами, я на даче. Подцепил бы к тв, прислал фото. а
Вернуться наверх
Реклама
Реклама
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подробнее>>
Dimon456
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 21:48:06
Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54Сообщений: 1849
Рейтинг сообщения: 0
А на это
Код:
TV. print(0,12,"Hello, world!")
Вернуться наверх
Реклама
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 22:02:12
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
А на это
Код:
TV. print(0,12,"Hello, world!")
Hello, world!
на это
Код:
TV.clear_screen(); TV.print_char(32, 0, 0xCA); TV.print_char(40, 0, 0xCE); TV.print_char(48, 0, 0xD2); TV.print_char(56, 0, 0xA8); TV.print_char(64, 0, 0xCB); TV.print_char(72, 0, 0x20); //"_" TV.print_char(80, 0, 0xA8); TV.print_char(88, 0, 0xC6); TV.print_char(96, 0, 0xC8); TV.print_char(104, 0, 0xCA); TV.print(0, 12, T, 1); //температура с термистора, 1 - один знак после запятой TV.print("@C"); // @-знак градус
КОТЁЛ ЁЖИК
25,5*С
Вернуться наверх
Реклама
Dimon456
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 22:07:30
Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54Сообщений: 1849
Рейтинг сообщения: 0
Все, я увидел, но только завтра.
Вернуться наверх
Реклама
slav0n
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Сб сен 25, 2021 23:39:36
Опытный кот
Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15Сообщений: 882Откуда: Харьков
Рейтинг сообщения: 0
осталось попробовать:
Код:
TV.print_char(32, 0, 'А'); TV.print_char(40, 0, 'Б'); TV.print_char(48, 0, 'В'); TV.print_char(56, 0, 'Г'); TV.print_char(64, 0, 'Д');
_________________ ohmycode! primuss3.com
Вернуться наверх
Реклама
AlexS4
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 01:01:32
Карма: 19
Рейтинг сообщений: 526
Зарегистрирован: Пт сен 10, 2021 15:19:36Сообщений: 3526
Рейтинг сообщения: 0
neid , прочитай мой 1й пост.
Вернуться наверх
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 09:29:59
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
толи я торможу толи непонятно как ты проверяешь/пропускаешь левый байт пар, получаяя указатель на unsigned char тоесть 1 байт на индекс.
Я тебе в личке написал по этому поводу...
Вернуться наверх
AlexS4
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 14:11:47
Карма: 19
Рейтинг сообщений: 526
Зарегистрирован: Пт сен 10, 2021 15:19:36Сообщений: 3526
Рейтинг сообщения: 1
ага ответил, дублирую сюда если комуто еще понадобится у нас 2 массива или потока но они разной длинны, тоесть пробегаешь входной массив побайтно и ищешь байты - префиксы последовательности в нашем случае xD0 xD1 если байт != им то просто переписываешь такой байт в выходной массив или поток если == то НИЧЕГО ПОКА не пишешь в выход а зачитываешь следуюший байт в последовательности и его преобразуешь по формулам или табличке перекодировки, c учетом запомненного заранее преффикса (2 варианта для киррилицы xD0 и xD1. и преобразованный таким способом значащий 1 байт дописываешь в выходной массив или поток.
Вернуться наверх
slav0n
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 15:30:48
Опытный кот
Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15Сообщений: 882Откуда: Харьков
Рейтинг сообщения: 0
а вручную перекодировать исходник из ютф в аски не судьба? винавр это делает за пару кликов и не надо никаких костылей
Вложения:
ASCII.png [22.75 KiB]
Скачиваний: 83
_________________ ohmycode! primuss3.com
Вернуться наверх
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 17:21:00
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
а вручную перекодировать исходник из ютф в аски не судьба? винавр это делает за пару кликов и не надо никаких костылей
Чем не довольны!? Коментарии не читаемы? Я в студии работаю... Кстати вопрос, вы не знаете как, работают недавно, не нашел смену кодировки(((
Последний раз редактировалось neid Вс сен 26, 2021 19:20:47, всего редактировалось 1 раз.
Вернуться наверх
AlexS4
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 17:31:50
Карма: 19
Рейтинг сообщений: 526
Зарегистрирован: Пт сен 10, 2021 15:19:36Сообщений: 3526
Рейтинг сообщения: 1
а вручную перекодировать исходник из ютф в аски не судьба? винавр это делает за пару кликов и не надо никаких костылей
а если это динамические входные данные?!
если пресетный текст то конечно в рантайм алгоритме нет никакого смысла.
Вернуться наверх
Dimon456
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 17:59:41
Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54Сообщений: 1849
Рейтинг сообщения: 1
neid , вы уж определитесь, либо студия, либо TVout от ардуино.
Начнем с ардуиноиде: строка вида
Код:
const char m[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"; // исходная строчка кириллицей
преобразуется ардуиноиде в последовательность
Спойлер Код:
m 00800106 byte[133] m[0] 0x0106 0xD0 m[1] 0x0107 0x90 m[2] 0x0108 0xD0 m[3] 0x0109 0x91 m[4] 0x010A 0xD0 m[5] 0x010B 0x92 m[6] 0x010C 0xD0 m[7] 0x010D 0x93 m[8] 0x010E 0xD0 m[9] 0x010F 0x94 m[10] 0x0110 0xD0 m[11] 0x0111 0x95 m[12] 0x0112 0xD0 m[13] 0x0113 0x81 m[14] 0x0114 0xD0 m[15] 0x0115 0x96 m[16] 0x0116 0xD0 m[17] 0x0117 0x97 m[18] 0x0118 0xD0 m[19] 0x0119 0x98 m[20] 0x011A 0xD0 m[21] 0x011B 0x99 m[22] 0x011C 0xD0
вся последовательность не приводитсялибо это сюрпрайз от ардуиноиде, либо это особенность С++.
А далее:
если первый байт масива xD0, то ко второму байту прибавляем x30,
если первый байт масива xD1, то ко второму байту прибавляем x70
Еще надо бы потрести font6x8.cpp, может там еще сдвинуто куда.
Вернуться наверх
neid
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 20:25:04
Карма: -10
Рейтинг сообщений: -30
Зарегистрирован: Пн окт 04, 2010 11:55:41Сообщений: 218
Рейтинг сообщения: 0
neid , вы уж определитесь, либо студия, либо TVout от ардуино. либо это сюрпрайз от ардуиноиде, либо это особенность С++.
думаю все ж C++.
а что по поводу перфиксов 0xD0 и 0xD1, то их
AlexS4 предлагает программно игнорить.
СПАСИБО ВСЕМ ОТКЛИКНУВШИМСЯ В ПОМОЩИ! Добавлено after 1 hour 6 minutes 2 seconds: ]преобразуется ардуиноиде в последовательность
У меня такое
Код:
const char m[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"; // исходная строчка кириллицей char k[200]; //33 буквы utf8_rus(k,m);
ответ в терминале
Спойлер Код:
208 , 0 144 , 192 208 , 0 145 , 183 208 , 0 146 , 194 208 , 0 147 , 195 208 , 0 148 , 196 208 , 0 149 , 197 208 , 0 129 , 168 208 , 0 150 , 198 208 , 0 151 , 199 208 , 0 152 , 200 208 , 0 153 , 201 208 , 0 154 , 202 208 , 0 155 , 203 208 , 0 156 , 204 208 , 0 157 , 205 208 , 0 158 , 206 208 , 0 159 , 207 208 , 0 160 , 208 208 , 0 161 , 209 208 , 0 162 , 210 208 , 0 163 , 211 208 , 0 164 , 212 208 , 0 165 , 213 208 , 0 166 , 214 208 , 0 167 , 215 208 , 0 168 , 216 208 , 0 169 , 217 208 , 0 170 , 218 208 , 0 171 , 219 208 , 0 172 , 220 208 , 0 173 , 221 208 , 0 174 , 222 208 , 0 175 , 223 208 , 0 176 , 224 208 , 0 177 , 225 208 , 0 178 , 226 208 , 0 179 , 227 208 , 0 180 , 228 208 , 0 181 , 229 209 , 1 145 , 183 208 , 0 182 , 230 208 , 0 183 , 231 208 , 0 184 , 232 208 , 0 185 , 233 208 , 0 186 , 234 208 , 0 187 , 235 208 , 0 188 , 236 208 , 0 189 , 237 208 , 0 190 , 238 208 , 0 191 , 239 209 , 1 128 , 240 209 , 1 129 , 168 209 , 1 130 , 242 209 , 1 131 , 243 209 , 1 132 , 244 209 , 1 133 , 245 209 , 1 134 , 246 209 , 1 135 , 247 209 , 1 136 , 248 209 , 1 137 , 249 209 , 1 138 , 250 209 , 1 139 , 251 209 , 1 140 , 252 209 , 1 141 , 253 209 , 1 142 , 254 209 , 1 143 , 255
массив k[200]
Вернуться наверх
slav0n
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 20:46:12
Опытный кот
Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15Сообщений: 882Откуда: Харьков
Рейтинг сообщения: 0
у меня студии нет. что-то не верю, чтоб редактор студии не позволял менять кодировку в свойствах файла. ТС уже б давно кириллицу узрел на своем ящике и без танцев с бубном
_________________ ohmycode! primuss3.com
Вернуться наверх
Dimon456
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 22:05:41
Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54Сообщений: 1849
Рейтинг сообщения: 0
slav0n писал(а):
ТС уже б давно кириллицу узрел на своем ящике и без танцев с бубном
Ящик у него на ардуино, а он за чем-то студию заводит.
Ардуино дает готовый код 0xD0+0x90, нужно преобразовать к символу 0xС0.
За чем нужно обратное преобразование в студии?
Вернуться наверх
slav0n
Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
Добавлено: Вс сен 26, 2021 22:18:29
Опытный кот
Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15Сообщений: 882Откуда: Харьков
Рейтинг сообщения: 1
ну, хотя бы, шоб не морочить голову с самописным парсером. латин - 8бит, кирилл - 16... а так все символы однобайтные - красота
_________________ ohmycode! primuss3.com
Вернуться наверх
Страница 2 из 4
[ Сообщений: 70 ]
, , ,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения