Например TDA7294

Форум РадиоКот • Просмотр темы - перекодировки с UTF-8 в Windows1251
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 15, 2025 03:21:18

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 70 ]  1, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 01:11:32 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
Всем привет! Не могу заставить работать перекодировки из UTF-8 в Windows1251. Не выдает результат как не бился...
Что то не так делаю, может принцип сам не понимаю перекодировки. Кто подскажет более свежим опытным взглядом?
Код:
/*----------
  UTF8  функция перекодировки
----------*/
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] + 0x30; //D0 c 144 по 191 
                                 
         } else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x70; //D1 с 128 по 143
                                                
                     } else {dest[++j] = src[i];}
   }
   if (src[i]== 0x91) { dest[j] = 0xB7;} //Ё
   if (src[i]== 0x81) { dest[j] = 0xA8;} //ё      
   
  } //end for
   
  dest[j] ='\0';
  return j;
}

/----в основном коде-------------
const unsigned char m[] = "АБВГД";  // исходная строчка кириллицей
char k[10];        // сюда будем записывать результат перекодировки         
utf8_rus(k,m);
USART_sendLine(k);
/*----------*/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 08:28:01 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
А чем UTF-8 от Windows1251 отличается?

Учитывая что
Код:
const unsigned char m[] = "АБВГД";  // исходная строчка кириллицей
на выходе выдает
Код:
m   00800100   byte[6]
m[0]   0x0100   0xC0
m[1]   0x0101   0xC1
m[2]   0x0102   0xC2
m[3]   0x0103   0xC3
m[4]   0x0104   0xC4
m[5]   0x0105   '\0'


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 08:52:12 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
А чем UTF-8 от Windows1251 отличается?

Кирилица 2 байтовая к примеру буква русская "А" - 0xD0, 0х90, далее
с русской "р" - 0хD1,0х80. На выходе представлленым вами, получается в массив не положил перекодированную строку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 09:14:43 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
neid писал(а):
получается в массив не положил перекодированную строку?
А какую он положил строку? И для чего вам эта перекодировка?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 10:03:16 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
На вопрос для чего для начала проверить его работу перед применение где либо.
Далее для начала написал код для перекодирования, чтобы кириллица полностью отображалась...
В том то и дело что, это соответствует win1251, но вывода почему то нет даже просто в терминале... возможно надо добавить 1 байт инфы, т.е. 0xD0 или 0xD1. Если взять строку "ABCDE", она полностью отображается в терминале
Код:
m   00800100   byte[6]  символ
m[0]   0x0100   0xC0         А
m[1]   0x0101   0xC1         Б
m[2]   0x0102   0xC2         В
m[3]   0x0103   0xC3         Г
m[4]   0x0104   0xC4         Д
m[5]   0x0105   '\0'      конец строки


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 11:57:47 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
neid писал(а):
но вывода почему то нет даже просто в терминале...
Не надо ни чего добавлять и кодировать, не изобретайте "велосипед"
Спойлер
Код:
const char m[] = "АБВГД";  // исходная строчка кириллицей


   printf("\nHello, world!\n");
   puts(m);
   printf("\nАБВГД");
   printf("\nПривет Форум РадиоКот");
   printf("\nПривет radiokot.ru");


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 12:48:18 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1405
Рейтинг сообщения: 0
Да удивительно, как некоторые, заморачиваются давно решенными вопросами.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 13:23:11 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7959
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
кодировох дохрена разных... вапрос с юником тоже решен

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 13:51:46 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
Не надо ни чего добавлять и кодировать, не изобретайте "велосипед"

Спасибо за ликбез! Я же говорю дальше применять, есть в проекте библиотека шрифта font6x8.c, в которой прописаны все символы по 255("я"), ну и вывод же конечно предпринимается не в терминал а на экран тв по av входу. Аля TVout от ардуино. Вот для чего мне перекодировка. Точнее все уже сделано, и выводить по символьно русский символы я могу, float, и т. д. ... Хочется русский текст вот и изучаю эту тему.
К примеру TV. print(0,12,"Я балбес!")


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 14:29:26 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Ну вот, а мы то думали, с терминалом проблема, а оно оказывается как
neid писал(а):
Аля TVout от ардуино


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 15:51:17 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
Dimon456, что за сарказм?думать за других впереди паровоза вы умеете, я уже прочуствовал не в одной теме)) Мысли то есть по поводу кода? Да и как бы написал что буду применять его потом, как еще опять не так выразился))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 16:18:36 
Друг Кота
Аватар пользователя

Карма: 31
Рейтинг сообщений: 880
Зарегистрирован: Пт сен 10, 2021 15:19:36
Сообщений: 6109
Откуда: Протвино
Рейтинг сообщения: 0
$ locale |grep -i ctype
LC_CTYPE=ru_RU.UTF-8

$ echo "Я бaлбес but 1byte per others"|hd
00000000 d0 af 20 d0 b1 61 d0 bb d0 b1 d0 b5 d1 81 20 62 |.. ..a........ b|
00000010 75 74 20 31 62 79 74 65 20 70 65 72 20 6f 74 68 |ut 1byte per oth|
00000020 65 72 73 0a |ers.|

толи я торможу толи непонятно как ты проверяешь/пропускаешь левый байт пар, получаяя указатель на unsigned char тоесть 1 байт на индекс.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 16:59:37 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Dimon456 писал(а):
И для чего вам эта перекодировка?
neid писал(а):
но вывода почему то нет даже просто в терминале...
neid писал(а):
Аля TVout от ардуино.
Причем тут терминал и TVout?, конкретнее бы выражался и сарказма бы не было.
А для TVout от ардуино есть соответствующая тема -> Arduino


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 17:53:02 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18891
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
а у меня есть вопросы:
1. а как в МК попала UTF-8?
2. а почему нельзя было сразу в МК засунуть Windows1251?

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 18:03:38 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1405
Рейтинг сообщения: 0
UTF международный стандарт. Как я уже говорил, пора бы уже переработать периферию микроконтроллеров.
Например UART родился из ASCI, пора родить периферию под UTF. Обязательно с поддержкой OLE.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 18:35:49 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
конкретнее бы выражался и сарказма бы не было.
А для TVout от ардуино есть соответствующая тема -> Arduino

А отладить код через терминал нельзя, когда перекодируется хотя бы один символ, потом проверил все символы, делалось так, это о терминале...
Ну я же сказал аля tvout, пишу я то я в студии, я свой ребята, пустите!)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 18:39:17 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
AlexS4,
Спойлер$ еchо "Я бaлбес but 1byte per others"|hd
00000000 d0 af 20 d0 b1 61 d0 bb d0 b1 d0 b5 d1 81 20 62 |.. ..a........ b|
00000010 75 74 20 31 62 79 74 65 20 70 65 72 20 6f 74 68 |ut 1byte per oth|
00000020 65 72 73 0a |ers.|
Код:
k[0]   0x016E   0xD0
k[1]   0x016F   0xAF
k[2]   0x0170   0x20
k[3]   0x0171   0xD0
k[4]   0x0172   0xB1
k[5]   0x0173   0x61
k[6]   0x0174   0xD0
k[7]   0x0175   0xBB
k[8]   0x0176   0xD0
k[9]   0x0177   0xB1
k[10]   0x0178   0xD0
k[11]   0x0179   0xB5
k[12]   0x017A   0xD1
k[13]   0x017B   0x81
k[14]   0x017C   0x20
k[15]   0x017D   0x62
k[16]   0x017E   0x75
k[17]   0x017F   0x74
k[18]   0x0180   0x20
k[19]   0x0181   0x31
k[20]   0x0182   0x62
k[21]   0x0183   0x79
k[22]   0x0184   0x74
k[23]   0x0185   0x65
k[24]   0x0186   0x20
k[25]   0x0187   0x70
k[26]   0x0188   0x65
k[27]   0x0189   0x72
k[28]   0x018A   0x20
k[29]   0x018B   0x6F
k[30]   0x018C   0x74
k[31]   0x018D   0x68
k[32]   0x018E   0x65
k[33]   0x018F   0x72
k[34]   0x0190   0x73
k[35]   0x0191   0x00


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 19:15:21 
Друг Кота
Аватар пользователя

Карма: 31
Рейтинг сообщений: 880
Зарегистрирован: Пт сен 10, 2021 15:19:36
Сообщений: 6109
Откуда: Протвино
Рейтинг сообщения: 0
Dimon456, чет я туго соображаю, не понял твой ответ. или непонял вопрос тс. я понял так что нужно получить массив смещений для фонта упакованного для 1251. тогда нужно отбросить префикс баайты вроде 0xD0 0xD1 и преобразовать изначащий байт под 1251. (это впоследствии позволит делать font[c] тоесть умножить на размер обьекта, добавить указатель начала и получить указатель на растр или что там за фонт.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 19:25:46 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -20
Зарегистрирован: Пн окт 04, 2010 11:55:41
Сообщений: 226
Рейтинг сообщения: 0
или непонял вопрос тс. я понял так что нужно получить массив смещений для фонта упакованного для 1251. тогда нужно отбросить префикс баайты вроде 0xD0 0xD1 и преобразовать изначащий байт под 1251. (это впоследствии позволит делать font[c] тоесть умножить на размер обьекта, добавить указатель начала и получить указатель на растр или что там за фонт.)

Выложу библиотеку шрифта! Уже говорил что вывод на экран успешен, если по символам выводить.


Вложения:
Комментарий к файлу: Особо ну пугайтесь, половина BIN записи, половина HEX
font6x8.cpp [20.43 KiB]
Скачиваний: 168
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: перекодировки с UTF-8 в Windows1251
СообщениеДобавлено: Сб сен 25, 2021 19:42:14 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
AlexS4, ни что не надо преобразовывать, это neid мозги парит себе и людям, надо просто посмотреть как выводится строка в этом самом TVout от ардуино.
Судя по font6x8.cpp буковки от А до я стоят на своих местах.
Откуда он взял и для чего D0 D1 - загадка.

Мне лень эту среду устанавливать с ее библиотеками, если он полностью проект выложит - может тогда еще гляну. А так пусть пишет в соответствующий раздел форума.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  1, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y