Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа со строками Utf8 / 18 сообщений из 18, страница 1 из 1
17.08.2017, 17:52
    #39507065
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Нужно строку в кодировке Utf8 вывести в консоль по 10 символов,
в строке могут быть как буквы кириллицы, так и латиницы и знаки препинания.
А UTF-8 — многобайтовая кодировка, символ в ней
может быть представлен как одним байтом, так и четырьмя.
Сделал функцию преобразования из Utf8 в cp1251, все работает. Но возможно кто-то подскажет
другой выход без преобразования в cp1251.
Как работать с такими строками при помощи str.size() или str.substr(n ,m).
...
Рейтинг: 0 / 0
17.08.2017, 17:59
    #39507072
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
polin11,

OS - windows?
...
Рейтинг: 0 / 0
17.08.2017, 18:04
    #39507074
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
OS Win, IDE MS VS
...
Рейтинг: 0 / 0
17.08.2017, 19:07
    #39507117
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
polin11Нужно строку в кодировке Utf8 вывести в консоль
Код: plaintext
 chcp 65001
Остальное - (де)нормализация и (де)композиция.
...
Рейтинг: 0 / 0
18.08.2017, 13:52
    #39507534
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
polin11Нужно строку в кодировке Utf8 вывести в консоль по 10 символов,
в строке могут быть как буквы кириллицы, так и латиницы и знаки препинания.
А UTF-8 — многобайтовая кодировка, символ в ней
может быть представлен как одним байтом, так и четырьмя.
Сделал функцию преобразования из Utf8 в cp1251, все работает.


Да не может всё работать. Русский и английский тексты будут видны, остальные -- пойдут вопросиками...

polin11Но возможно кто-то подскажет
другой выход без преобразования в cp1251.
Как работать с такими строками при помощи str.size() или str.substr(n ,m).

UTF-16, wchar_t, wstring,
Преобразуется той же функцией, что и в cp1251.
...
Рейтинг: 0 / 0
18.08.2017, 13:53
    #39507536
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Basil A. Sidorovpolin11Нужно строку в кодировке Utf8 вывести в консоль
Код: plaintext
 chcp 65001
Остальное - (де)нормализация и (де)композиция.

Это понятно, но это не позволит ему разбить строку по 10 символов...
...
Рейтинг: 0 / 0
18.08.2017, 14:03
    #39507539
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
MasterZivэто не позволит ему разбить строку по 10 символов...

Да, для этого придётся прочитать как устроена UTF-8 и чем первичные байты отличаются от
остальных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.08.2017, 15:11
    #39507580
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Dimitry SibiryakovMasterZivэто не позволит ему разбить строку по 10 символов...

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


Не обязательно, можно перевестись в URF-16/32, и радоваться.
ПРАВДА, это принципиально изменить ситуацию только тем, что будет работать на большем диапазоне возможных символов...
...
Рейтинг: 0 / 0
18.08.2017, 17:50
    #39507688
dbpatch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
MasterZivDimitry Sibiryakovпропущено...

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


Не обязательно, можно перевестись в URF-16/32, и радоваться.
ПРАВДА, это принципиально изменить ситуацию только тем, что будет работать на большем диапазоне возможных символов...

чему радоваться? UTF-16 тоже имеет символы, закодированные числом байт, большим чем два.
https://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings

до 12 байтиков на букву.

а вот UTF-32 да, декларируется как direct indexed, т.е. палюбасу всегда 4 байта на символ, если бы не одно но....
...
Рейтинг: 0 / 0
18.08.2017, 19:44
    #39507736
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
dbpatchдо 12 байтиков на букву.
неа.

суррогатная пара по частям не переводится в utf-8
а 6-ти байтная utf-8-подобная последовательность - за пределами стандарта
...
Рейтинг: 0 / 0
19.08.2017, 18:40
    #39507889
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Любой топик с кодировками у нас неизбежно перетекает в обсуждение суррогатных пар.
Я уже могу делать ставки на на новые топики.
...
Рейтинг: 0 / 0
19.08.2017, 18:55
    #39507892
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
mayton,

а что их обсуждать - стандарт просто почитать и всё
...
Рейтинг: 0 / 0
21.08.2017, 11:47
    #39508317
dbpatch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Изопропилdbpatchдо 12 байтиков на букву.
неа.

суррогатная пара по частям не переводится в utf-8
а 6-ти байтная utf-8-подобная последовательность - за пределами стандарта

за какими еще пределами? там по ссылке выше была просто 7-ми битная машина, и там - до 12 байтиков.

и при чем тут суррогатные пары к UTF-32?
...
Рейтинг: 0 / 0
21.08.2017, 12:02
    #39508327
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
dbpatch,

откуда 12 байтов на "букву" ? (codepoint наверное)
...
Рейтинг: 0 / 0
21.08.2017, 12:41
    #39508340
dbpatch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Изопропилdbpatch,

откуда 12 байтов на "букву" ? (codepoint наверное)

там вверху ссылка. открываем, жмем Ctrl+F, вбиваем 12 ...
...
Рейтинг: 0 / 0
21.08.2017, 17:06
    #39508525
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
dbpatchИзопропилdbpatch,

откуда 12 байтов на "букву" ? (codepoint наверное)

там вверху ссылка. открываем, жмем Ctrl+F, вбиваем 12 ...
и видим UTF-8 quoted-printable
...
Рейтинг: 0 / 0
21.08.2017, 17:51
    #39508537
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
maytonЛюбой топик с кодировками у нас неизбежно перетекает в обсуждение суррогатных пар.Да сколько уже можно путать суррогатные пары и составные символы?!
Суррогатные пары необходимы, чтобы представлять кодовые точки (и любые символы) за пределами базовой плоскости (BMP) в UTF16.
А составные символы не зависят от кодировки и массово представлены в BMP. И не только иероглифами .
...
Рейтинг: 0 / 0
21.08.2017, 19:28
    #39508565
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа со строками Utf8
Basil A. Sidorov,

И незачем на меня кричать. Я повторил термин который уже звучал в топике.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа со строками Utf8 / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]