@ProCxx

Страница 1273 из 2477
Ioann V
03.09.2017
14:12:55
Так что накиньте кода, который работает именно с UTF 8

Ioann V
03.09.2017
14:13:15
И все это в консоленьку Виндовую закидывает

Friedrich
03.09.2017
14:13:21
А как, собственно работать с Уникодом в консоли у Винды ?
Последние дня три мы это обсуждаем. Выше я привёл ссылку на приложение, которое православно печатает юникодовый список всех установленных прог из MSI. TLDR: - _setmode(_fileno(stdout), _O_U16TEXT); в начале программы - используешь std::wcout и std::wprintf везде

Google
Matwey
03.09.2017
14:13:28
@fvnever ты мне объясни зачем в виртуальном терминале экономить байты? выдавай каждый символ хоть 8-байтным кодом сразу

Anatoly
03.09.2017
14:13:55
«Давай заддоним смешанную калчер и мэй закапывать» — Ъ смешанная culture.
я имел в виду, если яхочу вывести числа с разделителями разрядов и деньги с определённым количеством знаков после запятой, то надо будет отрубать какие-нибудь встроенный преобразователи вывода в поток и форматироват ьявно, но это не относится к твоему вопросу и я понимаю проблему

Ioann V
03.09.2017
14:14:19
Если не ошибаюсь, конечно

Friedrich
03.09.2017
14:14:21
Wcout это уникод разве ?
В данной реализации — да.

Matwey
03.09.2017
14:14:30
Friedrich
03.09.2017
14:14:31
Это UTF16LE
В этой программе — да. UTF-16 это разве не юникод?

Ioann V
03.09.2017
14:14:54
Ну это явно не UTF 8

Friedrich
03.09.2017
14:15:03
Да, совершенно верно, UTF-16 это не UTF-8.

Просили юникод — нате вам юникод.

Google
Ilia
03.09.2017
14:15:30
Ioann V
03.09.2017
14:15:38
А я прошу UTF 8 - так как через него и только него можно представить все что есть на этой планете

С utf8 винда не работает
Ога, тогда ясно :(

Friedrich
03.09.2017
14:16:04
С utf8 винда не работает
Ну, на самом деле работает (65001), но вот с вводом в этом режиме у меня постоянные проблемы. Ни разу не видел, чтобы работало нормально.

Ioann V
03.09.2017
14:16:19
А вот то что там в строках вводили в 11 - 14 плюсах, позможность писать /u+0x...

Или такого не было ? Если было, то расскажите, что это тогда ?

Friedrich
03.09.2017
14:16:53
А я прошу UTF 8 - так как через него и только него можно представить все что есть на этой планете
Ты написал «А как, собственно работать с Уникодом», поэтому ответ был юникодовый. Про конкретный вид трансформации (UTF-8) был бы другой ответ :)

Ioann V
03.09.2017
14:17:11
Согласен, теперь интересуют вопросы выше :)

Square
03.09.2017
14:17:46
Wcout это уникод разве ?
Можно я спрошу? А что такое юникод?

Friedrich
03.09.2017
14:17:56
А вот то что там в строках вводили в 11 - 14 плюсах, позможность писать /u+0x...
Да, и синтаксис такой ввели, и ещё u8"" / u16"" литералы ввели. Это всё превращается в char*, если я не путаю (а я могу, ага). Поэтому, хотя это и полезные нововведения в целом, с юникодом на винде они не помогут :(

Ioann V
03.09.2017
14:18:19
Можно я спрошу? А что такое юникод?
Это некоторая последовательность байт, которая определяет данный символ

Friedrich
03.09.2017
14:18:49
Последовательность байт — это уже кодировка какая-то.

Ioann V
03.09.2017
14:18:51
Ну, как знал, так и ответил, что вам поправить сложно что ли :)?

Friedrich
03.09.2017
14:18:59
У юникода есть несколько кодировок, они называются UTF.

Friedrich
03.09.2017
14:19:10
UTF-8, UTF-16, etc.

Ioann V
03.09.2017
14:19:21
Согласен, да - все остальное кодировка декодировка

Google
Friedrich
03.09.2017
14:20:10
Немного работает, но по сути нет
Помимо очевидного, это может сломать всякие кривые программы, между прочим. Ну, те самые, заточенные на однобайтовую кодировку.

Square
03.09.2017
14:20:14
Недавно обсуждали почему утф8 не панацея. Для хранения он хорош однозначно

Ioann V
03.09.2017
14:20:37
UTF-8, UTF-16, etc.
То есть дефакто они переводят что нужно - в одно и тоже значение ?

Square
03.09.2017
14:21:03
То есть дефакто они переводят что нужно - в одно и тоже значение ?
Я те там кинул почитать. Можешь статью спольски ещё

Она и на русском есть. За 17 лет актуальности не потеряла

Friedrich
03.09.2017
14:21:20
Немного работает, но по сути нет
Представь, что ты пишешь программу, которая спрашивает у пользователя букву. И считывает её в однобайтовый буфер (потому что у нас же однобайтовая кодировка, да?). И вот тут ей внезапно суют кириллическую двухбайтовую «букву» в этот несчастный буфер. И всё превращается в ад.

Ioann V
03.09.2017
14:21:47
Не могу найти, то что ты мне кидал :)

Square
03.09.2017
14:22:01
Ну гуглится же на раз два

Square
03.09.2017
14:22:29
Джоел спольски - что нужно знать про кодировки

Ioann V
03.09.2017
14:22:51
thx :)

Square
03.09.2017
14:23:06
Вот актуализированная осовремененная версия со ссылкой на оригинал

http://kunststube.net/encoding/

Multibyte vs widechar и вот это вот все

Vladislav
03.09.2017
14:24:04
Square
03.09.2017
14:24:22
он все еще пишет?
Статье 17 лет :(

Ioann V
03.09.2017
14:25:00
Да, я ее даже когда то читал. Но все быстро забывается, если честно :)

Google
Friedrich
03.09.2017
14:25:05
На самом деле, для англоязычной аудитории статья более актуальна, чем для наших. Это же не им приходилось все эти сорок лет разгадывать ребусы из разряда БНОПНЯ.

Vladislav
03.09.2017
14:25:32
Статье 17 лет :(
ага. хорошо писал, но подсдулся

Square
03.09.2017
14:26:01
Владик чот пишет разгромное ...

Friedrich
03.09.2017
14:26:22
Вангую, что там будет ненависти пост. ...чёрт, нет.

Ioann V
03.09.2017
14:27:07
Это некоторая последовательность байт, которая определяет данный символ
Тогда все же, что тут не так ? Уникод он же как раз ставить некоторую последовательност байт - символу :?

Vladislav
03.09.2017
14:27:44
юникод - он про другое. он кодирует назначенный символ в >1 октет

не более

Admin
ERROR: S client not available

Влад
03.09.2017
14:27:54
Статье 17 лет :(
Мм, статья-ровесник.

Ioann V
03.09.2017
14:28:13
Square
03.09.2017
14:28:45
Блэт. Посоны. Давайте уже без гаданий на ромашке

Friedrich
03.09.2017
14:28:45
Юникод каждому «символу» (а это тоже не вполне однозначное понятие, кстати) ставит в соответствие некий код. Этот код можно записать разными последовательностями байт. Начиная с big/little endian (что тоже учитывается), и заканчивая способами записи многобайтовых последовательностей.

Square
03.09.2017
14:29:01
Friedrich
03.09.2017
14:29:37
Кстати, а UTF-32 тоже бывает LE/BE? Я про его варианты никогда не слышал.

Vladislav
03.09.2017
14:29:52
Я думал этим занимается как раз УТФ 8 или 16
в win исторически принята ucs16 (после 9x), ~== utf16

Google
Friedrich
03.09.2017
14:30:47
Есть ещё одна смешная ремарка (на самом деле, грустная). Микрософт почему-то думает, что «Юникод» — это UTF-16LE :)

И последовательно у себя применяет такую терминологию.

Matwey
03.09.2017
14:31:12
Тогда все же, что тут не так ? Уникод он же как раз ставить некоторую последовательност байт - символу :?
Уникод ставит в соответствие каждому символу число в математическом смысле, а как ты его в байтах выражаешь - это уже другой вопрос

Vladislav
03.09.2017
14:32:10
когда history++ в 200x писал с совместимостью от 98 до xp+ всего этого наелся

Ioann V
03.09.2017
14:32:31
Хммм... а как писать переносимые програмы с кодировками с винды на никсы ?

Вот в никсах вчар если не ошибаюсь 4 байта

Friedrich
03.09.2017
14:32:58
Хммм... а как писать переносимые програмы с кодировками с винды на никсы ?
Пишешь программу как тебе нужно, а внутри реализуешь слой совместимости.

Ioann V
03.09.2017
14:33:10
Тупо все в чарах и хранить ?(я так и делаю собсно)

TriΔng3l
03.09.2017
14:33:24
Friedrich
03.09.2017
14:33:31
Вот в никсах вчар если не ошибаюсь 4 байта
Не ошибаешься. И поэтому L"привет" будет разной длины (в байтах) на разных платформах, например. Но (в идеале) должно выводиться одинаково корректно.

Vladislav
03.09.2017
14:33:41
utf* отлично можно хранить в чарах

Vladislav
03.09.2017
14:34:03
вне зависимости от плаформы

Ioann V
03.09.2017
14:34:50
тогда все четко - и вообще мути никакой нету. Меня вот только одно всегда смущало - это плотность кодирования

Вот читаю я положим файл

Я не знаю какого он формата

кодирования

Friedrich
03.09.2017
14:35:06
utf* отлично можно хранить в чарах
Можно. Одна из возможных стратегий — это внутри программы все строки хранить в UTF-8 (и сохранять в std::string, например). И конвертировать при передаче во внешние API (если это линукс — то либо ничего не делаешь, либо, если хочешь работать по всем правилам, то пробуешь конвертировать в текущую локаль; если это винда — то конвертируешь в UTF-16 перед отправкой в функции типа WriteConsoleW).

Ioann V
03.09.2017
14:35:42
Вот как собсно быть в таких случаях - я лично сделал автоопределение кодировки, но оно естессно только для тех утф - в которых реально это распознать

Страница 1273 из 2477