Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2020, 20:10

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 14:52 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
вдохновившись Rust-ом пересматриваю свою сишную BlackBox библиотеку.
Rust в своей основе, оперирует со строками в формате UTF8.есть конечно поддержка и сишных строк - но только как необходимое зло
у меня в BlackBox сделано два варианта строк: однобайтные char * и двухбайтые char16_t * для юникода и проч. ибо BlackBox работает на всём, начиная от микроконтроллера и мощнее...

хочу отказаться от такого разделения заменив всё на UTF8 и вот почему:

хорошо известно что... любые строки в микроконтроллере, по причине ресурсных ограничений - зло.

НО допустим, имеется чуть более мощный микроконтроллер: есть набор символов ASCII (символы значения которых < 0x80) ими и оперируем...

любая ASCII строка также является валидной UTF8 строкой.

и всё хорошо, до тех пор пока не понадобятся символы значения которых больше 0x80...

Вопрос:
а где и на каких задачах такие символы могут понадобиться? выводить русские буквы? кодовые страницы?
это всё еще микроконтроллеры?

и второй вопрос:
не нашел вменяемых компактных сишных либ для конвертации c UTF-8.строк в сишный формат и наоборот
уже написал свою и на тестах всё работает
может кто видел реализацию подобного, поделитесь ссылками

спасибо.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 14:58 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
cheblin писал(а):
и всё хорошо, до тех пор пока не понадобятся символы значения которых больше 0x80...


И что будет?

cheblin писал(а):
не нашел вменяемых компактных сишных либ для конвертации c UTF-8.строк в сишный формат и наоборот
уже написал свою и на тестах всё работает


Любая UTF-8 строка является C-строкой. Что там конвертировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 15:10 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
Цитата:
И что будет?

зависит от принятой кодировки

Цитата:
Любая UTF-8 строка является C-строкой.

смотря что подразумевать под C-строкой.
в классическом понимании это массив байт термирированные нулём. байт на символ
и большинство библиотек заточены именно под такие строки

в случае юникода и char16_t . два байта на символ термирированные char16_t нулём
UTF-8 - количество байт зависит от символа . все символы со значениями больше 0x80 занимают 2 байта и более

я например вижу разницу

_________________
unirail.org


Последний раз редактировалось cheblin 13 мар 2019, 15:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 15:19 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
cheblin писал(а):
в классическом понимании это массив байт термирированные нулём. байт на символ
и большинство библиотек заточены именно под такие строки


И какому большинству библиотек есть дело до символов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 15:26 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
dev писал(а):
И какому большинству библиотек есть дело до символов?

этим

попробуйте посчитать длину двухбайтной строки функцией для однобайтной. или вы просто трололо?

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 15:41 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
Вот здесь сколько символов?


Вложения:
a.png
a.png [ 749 байт | Просмотров: 924 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 15:41 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
А здесь?


Вложения:
b.png
b.png [ 720 байт | Просмотров: 924 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 16:09 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4679
Откуда: КЧР, поселок Нижний Архыз
Китаец, зачем тебе хрюникод?
Китайцы же не пользуются им!!!
А всем остальным за глаза хватает 8-битных (а некоторым — даже 7-битных) кодировок!
Я как-то не испытываю потребности в хрюникоде в консольке: сижу себе в КОИ8-Р и в ус не дую!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 16:34 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
Цитата:
за глаза хватает 8-битных

нижнеагрызник, даю справку, UTF8 для символов меньше 0x80 - восьмибитные.

я спрашивал про микроконтроллеры... или ты на микроконтроллерах КОИ8-Р гоняешь?
прям в тексте своих исходников шпаришь - отправить в UART ?

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 16:59 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 692
cheblin писал(а):
Вопрос:
а где и на каких задачах такие символы могут понадобиться? выводить русские буквы? кодовые страницы?
это всё еще микроконтроллеры?

Я использую для вывода строк на экран LCD128x64. Лень было перекодировать строки, а система на UTF-8. Но фонт себе нарисовал только кириллицу(фонты линкуются блоками по необходимости).
cheblin писал(а):
и второй вопрос:
не нашел вменяемых компактных сишных либ для конвертации c UTF-8.строк в сишный формат и наоборот
уже написал свою и на тестах всё работает
может кто видел реализацию подобного, поделитесь ссылками
спасибо.

UTF-8 строка в принципе соответствует требованию Си строки (массив с окончанием 0). По этому стандартные функции обработки строки в большинстве случаев достаточны. Исключение составляет только анализ символов с кодом > 127, в этом случае нужны соответствующие функции которые будут работать с длинными символами. Но насколько это надо ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 17:01 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
The serial monitor and most smaller displays only know about 255 characters, using some extended ASCII set. Many of them *can* display a few of the most common characters such as m², äöü or €.

To show strings as expected on such a display, we first need to convert the UTF8-strings into whichever extended ASCII set is supported by that specific display. Luckily the code definitions for UTF8 and the most common versions of extended ASCII are very similar for the first 255 codes:

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 17:14 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
Цитата:
Но насколько это надо ?

я вообще именно строки на микроконтроллерах не использую совсем.
потому и спрашиваю

у меня они общаются в стиле: анекдот № 257
а у же на приёмной стороне есть нумерованный каталог анекдотов

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 17:48 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4679
Откуда: КЧР, поселок Нижний Архыз
cheblin писал(а):
я спрашивал про микроконтроллеры... или ты на микроконтроллерах КОИ8-Р гоняешь?
прям в тексте своих исходников шпаришь - отправить в UART ?

Обычно у меня сообщения на английском языке, поэтому там гольный ASCII. Но в случае работы с экранчиком могу и локализовать. Шрифт я уже давным-давно на КОИ8-Р нарисовал, с этим проблем не будет.
Все равно у меня на всех компьютерах в локали КОИ8. Так что, и микроконтроллер с КОИ8 будет отлично работать с моими компьютерами-ноутбуками...
cheblin писал(а):
у меня они общаются в стиле: анекдот № 257
а у же на приёмной стороне есть нумерованный каталог анекдотов

Во-во, это — самый оптимальный вариант!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 17:50 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 692
То есть, вы их вообще не анализируете(сортировка, парсинг).
Я пользую как-то так:
Код:
lc_printf(x+2+(6*7), y+2, "Канал0:%4hd\nКанал1:%4hd\nКанал2:%4hd",bf[0] >> 2,bf[1] >> 5,bf[2] >> 5);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:00 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
void1509 писал(а):
То есть, вы их вообще не анализируете(сортировка, парсинг).
Я пользую как-то так:

садомит )
я так не делаю...
это не айс как с точки зрения производительности, так и memory footprint
когда то давно писал в стукутуры которые передавал как массив байт... сейчас BlackBox

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:02 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
ура! я тотально перехожу на UTF8

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:08 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 692
cheblin писал(а):
void1509 писал(а):
То есть, вы их вообще не анализируете(сортировка, парсинг).
Я пользую как-то так:

садомит )
я так не делаю...
это не айс как с точки зрения производительности, так и memory footprint
когда то давно писал в стукутуры которые передавал как массив байт... сейчас BlackBox

Не понял, вы о чем ? Причем там "структуры" ? И чего не так с памятью и производительностью ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:08 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 692
cheblin писал(а):
ура! я тотально перехожу на UTF8

Рад за вас :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:26 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
Изображение

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 18:38 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2775
https://github.com/JuliaStrings/utf8proc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 19:16 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
NStorm писал(а):
https://github.com/JuliaStrings/utf8proc

видел кстати
у меня вопрос недоумение по коду там, например функция unsafe_encode_char
почему все пишут именно такЪ?
неужели не быстрее будет если на switch написать? у кого какое мнение?

Изображение

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 19:55 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4679
Откуда: КЧР, поселок Нижний Архыз
В уебе хрюникод вылезает только из-за смайликов. Иначе никак не объяснить, на кой черт для отображения тупого текста на английском языке может понадобиться это угребище!
Вот попытка сделать простенький парсер латеха на жабоскрипте — да, без хрюникода не обойдется. А остальное - фигня!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 20:04 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 692
cheblin писал(а):
NStorm писал(а):
https://github.com/JuliaStrings/utf8proc

видел кстати
у меня вопрос недоумение по коду там, например функция unsafe_encode_char
почему все пишут именно такЪ?
неужели не быстрее будет если на switch написать? у кого какое мнение?

Изображение

Вы сами ЭТО писали или кто подсказал ? И что ловит ваш switch ? Вы сначала наложили маску 0xE0 (0b1110 0000) на uc, а потом case-ом в uc ищете 0xFFFF, 0xFFFE. Ну и маска накладывается на младший байт слова. Если в младшем байте 0xE0 равно как и 0xC0 это ошибка и вообще не кодировка UTF-8 ! В общем это не код, белиберда какая-то.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 13 мар 2019, 20:14 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3422
Eddy_Em писал(а):
В уебе хрюникод вылезает только из-за смайликов. Иначе никак не объяснить, на кой черт для отображения тупого текста на английском языке может понадобиться это угребище!

для английского языка вообще без разницы, он во почти всех кодировках одинаково представлен.
Русско-немецкий словарь, например, в какой однобайтной кодировке надо хранить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF8 и микроконтроллеры
СообщениеДобавлено: 14 мар 2019, 01:15 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3378
Откуда: Китай, Пекин
не ту функцию скопировал. нужно было utf8proc_iterate брать, преобразование из UTF8

схематично идея в следующем
Изображение

_________________
unirail.org


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.


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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB