|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Не компилируется вывод u8 строк: Код: plaintext 1. 2.
MSVC + включён latest draft версия C++. А что делать-то? Ну кроме явного приведения к char *. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 13:03 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Я чувствую, что в С++20 нас ждёт глобальный песец. Вот именно из-за введения типов аля char8_t и std::u8string. Дураками будут выглядеть все, кто написал u8 или вообще использовал utf-8 без особой необходимости. А пользователи std::wstring будут хитро ухмыляться себе под нос. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 12:44 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petravА пользователи std::wstring будут хитро ухмыляться себе под нос. Ага, они-то на неспособность её вывестись в std::cout наступили гораздо раньше... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 12:48 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravА пользователи std::wstring будут хитро ухмыляться себе под нос. Ага, они-то на неспособность её вывестись в std::cout наступили гораздо раньше... В том то и дело, что они решили эту проблему лет 20-ть назад (std::wcout). Сейчас я наблюдаю шедевральное приключение. В MSVC если файл исходника в utf-8 without BOM, то и строка "Привет" в программе в кодировке utf-8. Если файл utf-8 with BOM, то строка в кодировке Windows-1251. Возможно я что-то перепутал и тогда всё наоборот. При этом префикс u8 не даёт никакой определённости и его результат зависит от кодировки файла. Ещё существет #pragma, которая явно задаёт кодировку строк в utf-8. При этом если файл исходника utf-8 without BOM, то кодировка широких символов L"Привет" слетает — оно не работает. Или не работало недавно. Сейчас ещё добавятся типы char8_t и std::u8string и тогда количество вариантов явно увеличится. Скоро полетит вообще весь код, где написано u8"Операция Ы". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 14:54 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
так ведь работает всё: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:06 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
В ideone под С++14 - нормас. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:15 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petravСейчас я наблюдаю шедевральное приключение. В MSVC если файл исходника в utf-8 without BOM, то и строка "Привет" в программе в кодировке utf-8. Если файл utf-8 with BOM, то строка в кодировке Windows-1251. "О, сколько нам открытий чудных..." Каким способом по-твоему компилятор должен угадать кодировку исходника чтобы привеcти твой литерал в запрошенную тобой utf-8?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:26 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravСейчас я наблюдаю шедевральное приключение. В MSVC если файл исходника в utf-8 without BOM, то и строка "Привет" в программе в кодировке utf-8. Если файл utf-8 with BOM, то строка в кодировке Windows-1251. "О, сколько нам открытий чудных..." Каким способом по-твоему компилятор должен угадать кодировку исходника чтобы привеcти твой литерал в запрошенную тобой utf-8?.. Давай по другому? Программисты на Шарпе испытывают такие вселенские проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:33 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
mayton В ideone под С++14 - нормас. Конечно. Речь идёт о включённой опции "Preview - Features from the Latest C++ Working Draft (/std:c++latest)" в Студии. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:35 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petravПрограммисты на Шарпе испытывают такие вселенские проблемы? Шарпеи пишут исходники в редакторах, отличных от среды, автоматически (принудительно) сохраняющей их в кодировке UTF-8 с ВОМ? Зачем, по-твоему, у компиляторов есть ключ для указания кодировки исходника?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:37 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravПрограммисты на Шарпе испытывают такие вселенские проблемы? Шарпеи пишут исходники в редакторах, отличных от среды, автоматически (принудительно) сохраняющей их в кодировке UTF-8 с ВОМ? Зачем, по-твоему, у компиляторов есть ключ для указания кодировки исходника?.. Программисты Java тоже в 99% случаев используют исходники в UTF-8 (как умолчательный тип кодировки). Хотя бывает из левых репозитариев залетают сорцы в 1251 но обычно среда подсказывает о нестандартной кодировке. И ее фиксят. И есть внутренние соглашения на проектах о том что вся команда обычно использует одну кодировку. Кодировка вобщем - это опция компиллятора или сборщика. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:48 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petrav mayton В ideone под С++14 - нормас. Конечно. Речь идёт о включённой опции "Preview - Features from the Latest C++ Working Draft (/std:c++latest)" в Студии. А если собрать твой исходник с помощью Command Line (cl) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 15:51 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravПрограммисты на Шарпе испытывают такие вселенские проблемы? Шарпеи пишут исходники в редакторах, отличных от среды, автоматически (принудительно) сохраняющей их в кодировке UTF-8 с ВОМ? Зачем, по-твоему, у компиляторов есть ключ для указания кодировки исходника?.. Да, тут я затупил, сорри. Наверное, потому что в GUI Студии никогда не видел принудительной установки кодировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 16:20 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Конечно. Речь идёт о включённой опции "Preview - Features from the Latest C++ Working Draft (/std:c++latest)" в Студии. А если собрать твой исходник с помощью Command Line (cl) ? Да ничего там не поменяется, хоть как собирай. У строки u8"..." поменялся тип. Раньше он был char[]. Теперь он другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 16:28 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petrav Сейчас я наблюдаю шедевральное приключение. В MSVC если файл исходника в utf-8 without BOM, то и строка "Привет" в программе в кодировке utf-8. Если файл utf-8 with BOM, то строка в кодировке Windows-1251. petrav При этом если файл исходника utf-8 without BOM, то кодировка широких символов L"Привет" слетает — оно не работает. Или не работало недавно. Это легаси, но поведение по умолчанию нельзя изменить, потому что это сломает сборку старых проектов. https://docs.microsoft.com/en-us/cpp/build/reference/source-charset-set-source-character-set?view=msvc-160 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 20:51 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petrav, Скорее всего пофиксят в c++23 https://rawgit.com/sg16-unicode/sg16/master/papers/p1423r2.html Но вообще хранить многоязычный текст исходнике это плохой стиль. Максимум что имеет смысл это разные технические литералы. Но для них u8 не нужен, они все в ascii. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 11:44 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyНо для них u8 не нужен, они все в ascii. А зачем он тогда вообще нужен? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 12:35 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Anatoly MoskovskyНо для них u8 не нужен, они все в ascii. А зачем он тогда вообще нужен? Так давно уже говорилось и повторялось, что utf-8 вообще ни для чего не нужен. А вот вреда от него целый состав (из вагонов). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 12:40 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
а что будет без utf-8 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 12:49 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
бабушкин зайчик а что будет без utf-8 ? UTF32. Сейчас, конечно, набегут фанатики и будут рассказывать про то как они сэкономили один мегабайт памяти с utf-8. И это всё при том, что они работают под Depeche Mode во второй вкладке с Ютубом. И Гугл Хром прокачивает за рабочий день гигабайты. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 13:04 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petravUTF32. Разбудите меня когда в Линухе появится wopen() или хотя бы fwopen()... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 13:09 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravUTF32. Разбудите меня когда в Линухе появится wopen() или хотя бы fwopen()... Вы уверены, что функция открытия файла имеет какое-то отношение к кодировке файла? Мне кажется, что нет. Да и Линукс тут не причём. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 13:21 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А зачем он тогда вообще нужен? u8"" нужен, если прижмет и все-таки надо получить литерал с utf8 из платформозависимой кодировки. А дальше, зная что char8_t (результат u8 с C++20) - это utf-8 то можно построить API который utf-8 обрабатывает по-другому. Например под виндой возможно (не знаю как на самом деле) запись utf-8 в cout через стандартный char* API не приведет к ожидаемому результату т.к. вместо перевода в wchar он выведет строку как набор 8-bit char. Поэтому вендоры могут добавить char8_t* API (как предложено в p1423r2 выше) и реализовать перевод в кодировку поддерживаемую ОСью ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 13:24 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
petravВы уверены, что функция открытия файла имеет какое-то отношение к кодировке файла? Я уверен, что функция открытия файла принимает на вход строку. Покажите мне, как Вы открываете файл с именем, хранящимся в std::wstring. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 13:28 |
|
std::ofstream и char8_t
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы уверены, что функция открытия файла имеет какое-то отношение к кодировке файла? Я уверен, что функция открытия файла принимает на вход строку. Покажите мне, как Вы открываете файл с именем, хранящимся в std::wstring. fopen() а что? Это на винде надо думать какой там ширины буква в имени файла, в нормальных системах это вообще не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2021, 18:18 |
|
|
Start [/forum/topic.php?fid=57&startmsg=40084357&tid=2017187]: |
0ms |
get settings: |
27ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
480ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 903ms |
0 / 0 |