Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2021, 21:52   #11
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Юникод
Я так понимаю что UTF-ы находятся внутри Юникод, т.е. являются его частями, а Юникод это уже полностью все включённые символы. UTF позволяет указать точное представление символа. Например я знаю что символ 2 байта, то можно взять UTF-16.
Loksiin12 вне форума Ответить с цитированием
Старый 14.08.2021, 17:02   #12
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Есть расход памяти, а есть количество информации. utf-8 может занимать до шести, но за вычетом избыточности и с округлением вверх до целого байта останется 4.
Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
UTF позволяет указать точное представление символа. Например я знаю что символ 2 байта, то можно взять UTF-16.
Нет. Кодировка выбирается заранее, а фактический код – это уже помещённые туда данные. Можно и utf-8 выбрать, а символ записать один из последних, тогда он займёт 6 байт. А можно выбрать utf-16, но записать символ также из последних, тогда он займёт 4 байта. Но если выбран utf-16, то два байта будут расходоваться даже на латиницу, а в utf-32 всегда будет использоваться 4 байта.

Последний раз редактировалось taras-proger77; 14.08.2021 в 17:08.
taras-proger77 вне форума Ответить с цитированием
Старый 14.08.2021, 17:49   #13
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Но если выбран utf-16, то два байта будут расходоваться даже на латиницу
Ну это понятно, просто я об этом не писал. Но в целом указывая utf мы уже рассчитываем на какое-то константное представление символа, т.е. точно указываем из какого он диапазона чтобы при открытии расчёты проходили быстрее.
Loksiin12 вне форума Ответить с цитированием
Старый 16.08.2021, 11:27   #14
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Я так понимаю что UTF-ы находятся внутри Юникод, т.е. являются его частями, а Юникод это уже полностью все включённые символы.
Юникод - это стандарт. UTF-x - это форматы представления/записи всего набора из стандарта.

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Например я знаю что символ 2 байта, то можно взять UTF-16.
Откуда вы знаете, что символ два байта? Что такое этот ваш символ? Почему именно 2? Можете и UTF-8 взять.

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Но в целом указывая utf мы уже рассчитываем на какое-то константное представление символа, т.е. точно указываем из какого он диапазона чтобы при открытии расчёты проходили быстрее.
На константный размер кодепоинта, а то можно вспомнить и про BE, LE, и про суррогатные пары, и про нормализацию.
ForenLi вне форума Ответить с цитированием
Старый 16.08.2021, 15:23   #15
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
На константный размер кодепоинта, а то можно вспомнить и про BE, LE, и про суррогатные пары, и про нормализацию.
Не константый, а на распределение. UTF-8 и UTF-16 неравномерны. Если много кодов из конца, то UTF-16 не такую уж и большую даст экономию. Например, если половина кодов из конца, то экономия всего четверть. При этом из-за суррогатов усложняется исходник, раздувается исполняемый код и замедляется его исполнение. Если три четверти из конца, то экономия одна восьмая и торможение (но не раздувание исполняемого кода) ещё больше. А на UTF-8 можно при таких распределениях потерять даже в расходе памяти на сам текст. А если большинство символов из начала, то неравномерные коды дают экономию.
taras-proger77 вне форума Ответить с цитированием
Старый 17.08.2021, 02:11   #16
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
Откуда вы знаете, что символ два байта?
открывайте таблицу языков(если существует) и смотрите(или возьмите максимальный тип и посмотрите где находится последний старший бит). Например латинские символы вообще влазят в char по сути полбайта(127). Получается что изначально можно задать диапазон чтения данных(если мы всё же разобрались что такое UTF-ы) и по этому заданному диапазону будет считывание.

Цитата:
Сообщение от ForenLi Посмотреть сообщение
Можете и UTF-8 взять.
Он динамический может раздуваться на все 6 байт судя по прочитанною мною информации и советам пользователей.
Loksiin12 вне форума Ответить с цитированием
Старый 17.08.2021, 11:23   #17
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
открывайте таблицу языков(если существует) и смотрите
Смотрю, весь русский алфавит в один байт влазит... Или вы про 866, или про 932, или про 1251, ... ?

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Получается что изначально можно задать диапазон чтения данных(если мы всё же разобрались что такое UTF-ы) и по этому заданному диапазону будет считывание.
Только, если это utf-32.

Цитата:
Сообщение от Loksiin12 Посмотреть сообщение
Он динамический может раздуваться на все 6 байт судя по прочитанною мною информации и советам пользователей.
Как-то не правильно это сформулировано. UTF это "способ кодирования", он не может раздуваться и т.д. utf-8 может часть символов кодировать до 4 байт (раньше можно было до 6).
ForenLi вне форума Ответить с цитированием
Старый 17.08.2021, 18:34   #18
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
UTF это "способ кодирования", он не может раздуваться и т.д.
Нет. UTF – это стандарт. А конкретные кодировки под ним есть и равномерные, и не равномерные. И данные в неравномерных кодировках отлично раздуваются.
taras-proger77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char или wchar_t, ANSI или Unicode? Vladiger Общие вопросы C/C++ 7 09.10.2013 17:13
string-char-wchar_t-char-string чето потерял magog7 Общие вопросы C/C++ 0 08.08.2011 20:21
char в wchar_t softrix Общие вопросы C/C++ 5 08.11.2010 15:40
В заголовок окна выводится только 1 символ из строки( wchar_t ) Руслантус Win Api 4 30.11.2009 19:45