|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2021, 21:52 | #11 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
|
14.08.2021, 17:02 | #12 |
Заблокирован
Регистрация: 17.12.2018
Сообщений: 514
|
Есть расход памяти, а есть количество информации. utf-8 может занимать до шести, но за вычетом избыточности и с округлением вверх до целого байта останется 4. Нет. Кодировка выбирается заранее, а фактический код – это уже помещённые туда данные. Можно и utf-8 выбрать, а символ записать один из последних, тогда он займёт 6 байт. А можно выбрать utf-16, но записать символ также из последних, тогда он займёт 4 байта. Но если выбран utf-16, то два байта будут расходоваться даже на латиницу, а в utf-32 всегда будет использоваться 4 байта.
Последний раз редактировалось taras-proger77; 14.08.2021 в 17:08. |
14.08.2021, 17:49 | #13 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
Ну это понятно, просто я об этом не писал. Но в целом указывая utf мы уже рассчитываем на какое-то константное представление символа, т.е. точно указываем из какого он диапазона чтобы при открытии расчёты проходили быстрее.
|
16.08.2021, 11:27 | #14 | |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
Цитата:
Откуда вы знаете, что символ два байта? Что такое этот ваш символ? Почему именно 2? Можете и UTF-8 взять. На константный размер кодепоинта, а то можно вспомнить и про BE, LE, и про суррогатные пары, и про нормализацию. |
|
16.08.2021, 15:23 | #15 |
Заблокирован
Регистрация: 17.12.2018
Сообщений: 514
|
Не константый, а на распределение. UTF-8 и UTF-16 неравномерны. Если много кодов из конца, то UTF-16 не такую уж и большую даст экономию. Например, если половина кодов из конца, то экономия всего четверть. При этом из-за суррогатов усложняется исходник, раздувается исполняемый код и замедляется его исполнение. Если три четверти из конца, то экономия одна восьмая и торможение (но не раздувание исполняемого кода) ещё больше. А на UTF-8 можно при таких распределениях потерять даже в расходе памяти на сам текст. А если большинство символов из начала, то неравномерные коды дают экономию.
|
17.08.2021, 02:11 | #16 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
открывайте таблицу языков(если существует) и смотрите(или возьмите максимальный тип и посмотрите где находится последний старший бит). Например латинские символы вообще влазят в char по сути полбайта(127). Получается что изначально можно задать диапазон чтения данных(если мы всё же разобрались что такое UTF-ы) и по этому заданному диапазону будет считывание.
Он динамический может раздуваться на все 6 байт судя по прочитанною мною информации и советам пользователей. |
17.08.2021, 11:23 | #17 | |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
Смотрю, весь русский алфавит в один байт влазит... Или вы про 866, или про 932, или про 1251, ... ?
Цитата:
Как-то не правильно это сформулировано. UTF это "способ кодирования", он не может раздуваться и т.д. utf-8 может часть символов кодировать до 4 байт (раньше можно было до 6). |
|
17.08.2021, 18:34 | #18 |
Заблокирован
Регистрация: 17.12.2018
Сообщений: 514
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |