|
1 / 1 / 4
Регистрация: 23.09.2014
Сообщений: 11
|
|
Записать информацию в файл в нужной кодировке23.09.2014, 11:52. Показов 6887. Ответов 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 строк и записать в него информацию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|