Easyelectronics.ru

Электроника для всех
Текущее время: 11 авг 2020, 03:14

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



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

Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 06:39 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4866
Откуда: Кемеровская область, Киселевск
В общем декодирую UTF8 кодировку числа.

Первый байт нормально декодируется. Число от 0 до 127. 7 бит.

Потом два байта 11 бит.

Доходит до .....456 и дальше счет начинается с 851....

В чем проблема? После 456 непонятно как UTF кодирует данные.

Вот дамп:

Код:
//Строка которая выводит
VALUE := (((buf[INDEX + 4] and $F) shl 6) or (buf[INDEX + 5] and $3F));
memo1.Lines.Add(inttostr(VALUE) + '  1byte:' + inttobin(buf[INDEX + 4], 8) + '   2byte:' + inttobin(buf[INDEX + 5], 8));


453  1byte:11000111   2byte:10000101
454  1byte:11000111   2byte:10000110
455  1byte:11000111   2byte:10000111
456  1byte:11000111   2byte:10001000
851  1byte:11001101   2byte:10010011
852  1byte:11001101   2byte:10010100
853  1byte:11001101   2byte:10010101
854  1byte:11001101   2byte:10010110
855  1byte:11001101   2byte:10010111
856  1byte:11001101   2byte:10011000
857  1byte:11001101   2byte:10011001
858  1byte:11001101   2byte:10011010
859  1byte:11001101   2byte:10011011


_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 10:47 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 янв 2010, 18:55
Сообщения: 163
Откуда: Томск
Код:
VALUE := (((buf[INDEX + 4] and $F) shl 6) or (buf[INDEX + 5] and $3F));


должно быть ... and $1F) shl 6)...

А вообще у вас тут только частный случай для двухбайтовых символов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 10:55 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4866
Откуда: Кемеровская область, Киселевск
Вопрос решен. Выводится все верно. 1F да я исправил это для 2 байтовой комбинации, для 3 0F
Меня сбил с толку кодировщик такой порядок был задуман.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 12:00 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
Какой смысл этот хрюникод использовать, если вы не для китайцев сервис делаете? Используйте любую однобайтную кодировку. Если в мастдайке — 1251, если в юниксе — КОИ8-Р или опять же 1251...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 12:11 
Заглядывает иногда

Зарегистрирован: 09 янв 2013, 21:54
Сообщения: 102
Откуда: Челябинск
Потому что удобно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 12:23 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4866
Откуда: Кемеровская область, Киселевск
Eddy_Em писал(а):
Какой смысл этот хрюникод использовать, если вы не для китайцев сервис делаете? Используйте любую однобайтную кодировку. Если в мастдайке — 1251, если в юниксе — КОИ8-Р или опять же 1251...


Это используется для динамического кодирования числа. Меньше занимает место. Используется в аудио потоке для нумерации фреймов.
Вложение:
Screenshot_9.png
Screenshot_9.png [ 9.32 Кб | Просмотров: 2030 ]

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 12:30 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
"занимает байт - 7", "кодирует бит - 36". Т.е. вместо 36 бит занимаем 56? И где логика?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 12:32 
Заглядывает иногда

Зарегистрирован: 09 янв 2013, 21:54
Сообщения: 102
Откуда: Челябинск
Логика в том, что когда нужно кодировать не 36 бит, а только 7, то хватает одного байта.
Это отличие от фиксированных кодировок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 14:49 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 янв 2010, 18:55
Сообщения: 163
Откуда: Томск
Eddy_Em писал(а):
Какой смысл этот хрюникод использовать, если вы не для китайцев сервис делаете? Используйте любую однобайтную кодировку. Если в мастдайке — 1251, если в юниксе — КОИ8-Р или опять же 1251...


Смысл в том, что UTF-8 на любой системе с поддержкой оного отображается всегда корректно. При этом UTF-8 кодировка довольно компактная. И очень хорошо что данная кодировка по-маленьку вводится повсеместно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 15:48 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
Не, я со своей родной КОИ8-Р еще долго не уйду. Уж очень удобно, когда 1байт == 1 символ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 16:50 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
Eddy_Em писал(а):
Не, я со своей родной КОИ8-Р еще долго не уйду.

а в каких юниксах до сих пор не перешли на утф-8 по дефолту?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 17:00 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
Перешли везде, но вернуть родную однобайтную легко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 17:29 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
я так и думал:) а зачем?? удобство однобайтных кодировок - оно относительное. а утф-8 - повсеместно, стандарт. сделал представление букв в проге двухбайтное и нет проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 17:53 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
Удобство однобайтных кодировок во всем. Хрюникод только китайцам нужен. И болт я клал на этот "стандарт" у которого длина строки в байтах — полная загадка.


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

Зарегистрирован: 27 янв 2010, 18:55
Сообщения: 163
Откуда: Томск
Eddy_Em писал(а):
Удобство однобайтных кодировок во всем. Хрюникод только китайцам нужен. И болт я клал на этот "стандарт" у которого длина строки в байтах — полная загадка.


Вам никто болт класть не запрещает - ваше дело. Но я все-же рекомендовал-бы вам разобраться, загадки никакой нет. Когда прийдет понимание может-быть не будет такого резкого неприятия.

Вот вырезка прямо с википедии, куда уж проще.
Код:
* Bits of      First       Last         Bytes in
* code point   code point  code point   sequence  Byte 1      Byte 2      Byte 3      Byte 4      Byte 5      Byte 6
* 7            U+0000      U+007F       1         0xxxxxxx
* 11           U+0080      U+07FF       2         110xxxxx    10xxxxxx
* 16           U+0800      U+FFFF       3         1110xxxx    10xxxxxx    10xxxxxx
* 21           U+10000     U+1FFFFF     4         11110xxx    10xxxxxx    10xxxxxx    10xxxxxx
* 26           U+200000    U+3FFFFFF    5         111110xx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx
* 31           U+4000000   U+7FFFFFFF   6         1111110x    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 19:21 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
У меня нет задач кодирования переменной последовательности данных.


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

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3446
Eddy_Em писал(а):
Удобство однобайтных кодировок во всем. Хрюникод только китайцам нужен.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 20:41 
Заглядывает иногда

Зарегистрирован: 09 янв 2013, 21:54
Сообщения: 102
Откуда: Челябинск
Да не спорьте. Не нужно ему, так не нужно.
Кто знает, в чём польза от юникода, тот им и так пользуется. А кто не знает - его проблемы дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 20:45 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
_pv писал(а):
Eddy_Em писал(а):
Удобство однобайтных кодировок во всем. Хрюникод только китайцам нужен.

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

Я не знаю немецкого, так что прикол не прошел ☺

А отдельные слова набрать просто — в латехе есть нужные макросы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 21:46 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
Eddy_Em, если ты делаешь девайс на мелком мк и у тебя не хватает памяти, достаточно вообще юзать кои-7р или как он называется, когда вместо латинских мелких букв - русские. раньше так делали и жили нормально:)) и все хорошо, пока ты выводишь свою кодировку на свой же экран. но как только девайс хочет что-то слать во внешний мир, разница уже большая. для своих поделок можно свою кодировку придумать, "чтобы никто не догадался" (с)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 21:54 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4713
Откуда: КЧР, поселок Нижний Архыз
Цитата:
юзать кои-7р

КОИ7 придумали из-за того, что первые терминалы были семибитными. А не из-за "нехватки памяти". Семибитных микроконтроллеров не существует, насколько я знаю.
Цитата:
как только девайс хочет что-то слать во внешний мир

Абсолютно ничего не изменится. Посмотри на наш сайт и на многие другие сайты в КОИ8. Они чем-то от хрюникодовых внешне отличаются? Ничем!
А шрифты я специально в КОИ8 себе сварганил, чтобы просто было работать с микроконтроллерами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 16 янв 2017, 22:10 
Заглядывает иногда

Зарегистрирован: 09 янв 2013, 21:54
Сообщения: 102
Откуда: Челябинск
Цитата:
Посмотри на наш сайт и на многие другие сайты в КОИ8.

Увы, юникод сейчас повсюду, где понимают смысл его применения, где выгода от его использования гораздо выше потерь. И данный сайт не стал исключением:
Код:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Код:
╔══════╗
║ αβγξ ║
╚══════╝
Если здесь видны греческие символы в рамке, значит ваш браузер не древнее УГ и поддерживает юникод.

Тема, напомню, вовсе не о тексте в UTF-8, а о сжатии числовых данных этим алгоритмом.
Вы же зашли сюда в очередной раз сообщить всему миру, что юникод отстой, а кои8 - рулёззз, дабы развести очередной холивар. Так ведь?


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

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Eddy_Em писал(а):
КОИ7 придумали из-за того, что первые терминалы были семибитными.

Да ну!? А может 6-и битовые? И байт изначально не из 8 бит состоял ведь)))

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Декодирование UTF8
СообщениеДобавлено: 17 янв 2017, 01:26 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
Eddy_Em писал(а):
А шрифты я специально в КОИ8 себе сварганил
ну вот в той кои7 можно было сократить размер шрифта аж в 2 раза! а в остальном никакой разницы (с)
PRC писал(а):
И байт изначально не из 8 бит состоял ведь)))
а из скольки?


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

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Ink писал(а):
а из скольки?

https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B9%D1%82

_________________
От Парижа до Находки с водкой лучше, чем без водки!


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


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


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

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


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

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

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