|
1 / 1 / 4
Регистрация: 23.09.2014
Сообщений: 11
|
|
Записать информацию в файл в нужной кодировке23.09.2014, 11:52. Показов 7062. Ответов 31
Метки нет (Все метки)
Имеется строка типа wchar_t, нужно записать её в текстовый файл, чтобы можно было открыть его блокнотом и всё читалось без кракозябр. Лучше перевести строку из wchar в string. подскажите функцию, и как ей пользоваться
0
|
|
| 23.09.2014, 11:52 | |
|
Ответы с готовыми решениями:
31
Записать информацию в файл в правильной кодировке Как записать файл в кодировке utf-8? Считывание из файла в нужной кодировке |
|
Ушел с форума
|
||||
| 26.09.2014, 00:49 | ||||
|
либо код с перспективами переноса на другие платформы. Во всех остальных случаях такие заботы не нужны и приводят к переусложнению на пустом месте, а также к растрачиванию времени, выделенного на разработку. IMHO. Не считаю факт их существования в природе достаточным поводом, чтобы отказываться от try/catch/throw и не писать "int a = 1000000".
лет используется самый что ни на есть UTF-16: Surrogates and Supplementary Characters http://msdn.microsoft.com/en-u... 85%29.aspx
0
|
||||
| 26.09.2014, 11:05 | ||
|
Добавлено через 3 минуты Evg, насчет кастрированности почитайте хотя бы: http://zelserg.livejournal.com/2570.html
0
|
||
|
|
|||
| 26.09.2014, 11:53 | |||
|
Может я что-то не так понимаю с назначением типа wchar_t
0
|
|||
|
|
||
| 26.09.2014, 11:59 | ||
|
Я блокнотом много лет не пользуюсь, а потому как-то до сих пор считал, что он кроме win1251 никаких кодировок не понимает. По части ссылки я не увидел для себя ничего полезного. По ходу дела я не совсем понимаю, как работают с wchar_t под виндой
0
|
||
|
|
|||
| 26.09.2014, 12:10 | |||
|
Добавлено через 21 секунду Добавлено через 2 минуты Всякие суррогатные пары - это особенность конкретной кодировки utf-16le или utf-16be. Тип wchar_t по смыслу, как мне казалось, не должен быть привязан к устройству какой-либо конкретной кодировки. wchar_t - это тип для хранения unicode, а не его кодирования Добавлено через 7 минут Ну и изначальная моя претензия была основана на том, что если если массив wchar_t'ов записать в файл обычной функцией (которая работает с массивами байтов), то положение звёзд на небе определило бы то, что внутреннее представление wchar_t под виндой совпадает с кодировкой utf16-le и благодаря этому факту мы и получили бы файл в конкретной кодировке utf16-le
0
|
|||
| 26.09.2014, 12:49 | |
|
Боюсь, Вы невнимательно читали статью или не обдумывали прочитанное
![]() Надо исходить не из концепции wchar_t, а из концепции unicode. Как бы Вы решили проблемы перехода расширения количества символов с ~65тыс до 1млн? Переписывать все программы или сделать так, чтобы те, кому новые символы не нужны [почти] не заметили перехода и могли пользоваться старыми программами? Что касается wchar_t, то у Windows он был и есть 16 битов (он точно соответствовал 1-му варианту unicode, а теперь ему приходится использовать пары), а в Linux 32 бита ("внутри" ему не нужны пары). Наверное, Гейтс предпочел добавить и переделать несколько функций, а не ломать ядро и переписывать приложения (прикиньте, сколько их было к 1996 году) Особенно, если учесть, что эти расширения абсолютному большинству американцев и европейцев не нужны. ![]() Добавлено через 5 минут Кстати, массив wchar_t НЕ следует писать как массив байтов (хотя часто получается правильно). Пишите его как массив wchar_t, либо делайте явное преобразование в Utf16, Utf32 или utf8. Только надо не забыть записать в начале BOM и все будет корректно и будет читаться везде (собственно, это я и написал в своем первом сообщении темы, только кратко ).
0
|
|
|
|
|||||||
| 26.09.2014, 13:36 | |||||||
|
Добавлено через 4 минуты А... про последнее понял. Там будет проблема с символом '\0'. ТОгда printf надо заменить на что-то, не работающее с Си'шным понятием строки (например, fwrite). Правда теперь я не понимаю, что такое
0
|
|||||||
| 26.09.2014, 16:27 | ||
А так обошлось "малой кровью" и многие программисты, администраторы баз данных (не говоря уж о пользователях) этого перехода не заметили. ![]() Вы всерьез полагаете, что американцы в массе стали бы напрягать себя ради каких-то там иероглифов и прочей ерунды, о которой они не знают и знать не хотят и которой они не пользуются? ![]() Добавлено через 22 минуты Кроме всего прочего, понадобилось бы удвоить количество дисковой памяти при переходе utf16 - utf32 (а ради чего, спрашивается).
0
|
||
|
|
|||
| 26.09.2014, 18:08 | |||
|
При изменении wchar_t в системе программирования и какой-нибудь должным образом сделанной дефолтной настройке в библиотеке, весь основной гемор свёлся бы только к тому, что нужно перекомпилировать программу в новой системе программирования. Ну и вылизывание всяких мелких косяков, где явно заложились на то, что размер wchar'а равен 16 битам. При этом динамические библиотеки вполне можно было бы реализовать так, что старые бинарники и пересобирать бы не пришлось, а весь гемор лёг бы на библиотеку, которая одновременно умела бы работать и по старому, и по новому. В линуксе для этого в динамических библиотеках используется версионирование, наверное и в винде что-то подобное есть
0
|
|||
| 26.09.2014, 23:13 | |
|
Разве программы в USA разрабатывает только Microsoft? Смена ядра коснулась бы всех (и независимых разработчиков и пользователей).
Впрочем, я изложил свое мнение, а дальше Ваше дело - соглашаться с ним или иметь свое, отличное (от моего )
0
|
|
| 26.09.2014, 23:13 | |
|
Ввести и записать в файл информацию о книгах Записать всю информацию из файла в другой файл Ввести и записать в файл информацию о репертуаре Большого театра Структуры. Ввести и записать в файл информацию о расписании занятий 11 класса Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|