LINUX.ORG.RU

Ответ на: комментарий от Stahl

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

saahriktu ★★★★★
()
Ответ на: комментарий от utf8nowhere

Я пояснил, что в стандарте C и C++ понимают под basic character set

а, не, ну это понятно. я имею ввиду общий случай, «тип char вообще» так сказать. ТС же не указал про какой язык/платформу он говорит

upcFrost ★★★★★
()

Самолично ковырял платформу, где char 32-битный.

Zenom ★★★
()
Ответ на: комментарий от saahriktu

Оставь свои влажные мечты при себе. Если UTF-8 умрёт, то на его смену придёт что-либо гораздо более несовместимое с ASCII.

te111011010
()
Ответ на: комментарий от te111011010

Если UTF-8 умрёт, то на его смену придёт что-либо гораздо более несовместимое с ASCII

Так я про это и говорю. Если бы не так, то, действительно, можно было бы сразу прописать в стандарте, что char совместим с ASCII и потому всегда 1 байт. Но, это, по ходу, не прописано явно чтобы после смерти UTF-8 можно было спокойно сделать char хоть 4 байта, и при этом пришлось меньше править стандарт. А не так, что при текущих формулировках они уже сейчас должны сделать char 3 байта минимум, поскольку, видите ли, «basic character set» - это слишком много символов.

saahriktu ★★★★★
()

Если я помню, то char - 1 байт перманентно. Как он умудряется хранить такое? Не допёр.

Элементарно, Ватсон. Во первых, char могут быть разными, а во вторых, есть строки и массивы. Передаёшь такую строку состоящую из однобайтовых элементов, в которой внутри всё что угодно храниться может, на вывод в консоль с кодировкой утф-8 и либы ОС этот массив байтов парсят, конвертируют на лету в набор утф-8 символов, которые и выводят на экран. Перекодировки на лету, много перекодировок, вот и весь секрет как массивы из однобайтовых элементов вдруг превращаются в утф-8 текст.

Napilnik ★★★★★
()
Ответ на: комментарий от utf8nowhere

Ты ж сам уже ссылку давал (но почему-то удалал). Многие, и ты в том числе, расчитывают на 4 байта, а это опасно, ибо может быть 6. Переполнение буфера, всё такое.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Необходимости проверок на валидность никто не отрицал. Там одной проверкой на «не более 4 байт» не ограничишься.

utf8nowhere ★★★
()
Ответ на: комментарий от i-rinat

Разговор о том, что считать валидным: 6 или 4. И сколько можно закодировать, если не париться о валидности. Ответ: сколько угодно: 6, 8, 48...

utf8nowhere ★★★
()
Ответ на: комментарий от utf8nowhere

Приведи пример 48-байтной последовательности в рамках формата UTF-8, пожалуйста. Или 8-байтной, хотя бы.

i-rinat ★★★★★
()
Ответ на: комментарий от utf8nowhere

Это творчество некого Vadim Romanko: https://ru.wikipedia.org/w/index.php?title=UTF-8&type=revision&diff=5... Ему и не место в википедии, по-хорошему. Ссылок нет. Наверное, это вполне себе кодировка, я не проверял непротиворечивость. Только вот это уже совсем не UTF-8.

В ISO/IEC 10646:2003 UTF-8 определялась для максимум 6 байт. В более новых версиях решили ограничиться 4. Мне неизвестны стандарты, которые бы расширяли определение UTF-8 так, как написано в русской википедии.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.