The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.76, opennews (?), 08-Фев-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


22. "Выпуск языка программирования Rust 1.76"  –2 +/
Сообщение от Аноним (3), 09-Фев-24, 00:59 
Мне больше интересно почему у этих символ вместо 1 байта 4 байта? И я не понимаю, у них это utf-16 без суррогатных единиц, т.е. несчастный огрызок UCS-2 с которым все уже настрадались? При этом, утф-8 использовать просто нельзя, в нём легко может быть и 1 и 2 и 6 байт.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

24. "Выпуск языка программирования Rust 1.76"  +/
Сообщение от Аноним (24), 09-Фев-24, 01:02 
Строго до 4 по стандарту. больше - уже невалидно.
Ответить | Правка | Наверх | Cообщить модератору

27. "Выпуск языка программирования Rust 1.76"  +1 +/
Сообщение от Аноним (3), 09-Фев-24, 01:12 
Хм, действительно, я был практически уверен что мне встречались какие-то 6-байтные последовательности, это даже было законно и по стандарту (прошлому) в теории. Не помню, что это было и для чего. В таком случае, 4 байт действительно хватает для utf-8, остаётся вопрос с переменностью.
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.76"  +2 +/
Сообщение от Витюшка (?), 09-Фев-24, 01:45 
https://www.unicode.org/reports/tr26/
Ответить | Правка | Наверх | Cообщить модератору

40. "Выпуск языка программирования Rust 1.76"  +1 +/
Сообщение от Аноним (3), 09-Фев-24, 02:00 
Похоже, это именно оно, спасибо за ссылку!  Припоминаю, что пришлось использовать utf-32 тогда, потому что нормальный юникод был только в линуксе и в программах с icu (тот же хром) и у всех остальных платформ свои несовместимые представления о юникоде.
Ответить | Правка | Наверх | Cообщить модератору

66. "Выпуск языка программирования Rust 1.76"  +2 +/
Сообщение от morphe (?), 09-Фев-24, 04:32 
> В таком случае, 4 байт действительно хватает для utf-8, остаётся вопрос с переменностью.

4 байт не хватит для представления любого символа в utf-8.
utf-8 это способ кодирования unicode символов, где 1 символ минимум 1 байт, а максимум 6 байт
В utf-16 - минимум 2, максимум 4
utf-32 - всегда 4 байта, потому что unicode символ по стандарту не может иметь codepoint больше по размеру чем 4 байта.

Строки в Rust utf-8, и там один символ может быть закодирован как 6 байт, что логично, ведь латиница в utf-32 занимала бы в 4 раза больше места чем нужно, а худший случай в 6 байт на codepoint пока не осуществим (Нет таких пока, китайский и прочие языки - максимум 5 байт)

Однако строки в Rust напрямую не индексируются посимвольно, а потому char сделали статичные 4 байта, поэтому char вмещает в себя любой unicode codepoint.

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

71. "Выпуск языка программирования Rust 1.76"  +/
Сообщение от Аноним (-), 09-Фев-24, 06:21 
>один символ может быть закодирован как 6 байт, что логично, ведь латиница в utf-32 занимала бы в 4 раза больше места чем нужно, а худший случай в 6 байт

Откуда данные про 6 байт на символ? В первый раз слышу! 4 байта на символ, или UTF-32 - это самый большой формат кодирования из всех существующих, и он легко вместит в себя все кодовые позиции последнего вышедшего стандарта Юникод.

Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск языка программирования Rust 1.76"  +1 +/
Сообщение от n00by (ok), 09-Фев-24, 08:20 
Что бы закодировать все возможные четырёхбайтные значения (0x00000000 ... 0xffffffff) в кодировке UTF-8 может потребоваться до 6-ти байт. Однако стандарт ограничил диапазон возможных значений символов Уникрода максимумом U+10FFFF и они умещаются в 4 байта UTF-8.
Ответить | Правка | Наверх | Cообщить модератору

110. "Выпуск языка программирования Rust 1.76"  +/
Сообщение от morphe (?), 09-Фев-24, 16:14 
Однако суть не меняется, codepoint максимум 4 байта, codepoint закодированный в utf-8 максимум 6 байт

Даже когда в Unicode решат дропнуть utf-16 (из-за него codepoint range и ограничили, хотя там действительно до столкновения с другими цивилизациями range не кончится) - Rust останется с ним полностью совместим

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру