Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 31.05.2018, 08:31   #1
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию Изменение кодировки текстового файла

Добрый день. Подскажите алгоритм изменения кодировки текстового файла: какие Win32 API функции для этого надо использовать и в какой последовательности.
Например, есть текстовый файл в кодировке ANSI, нужно, чтобы этот файл стал в кодировке UTF-8.
Drekon вне форума   Ответить с цитированием
Старый 31.05.2018, 08:40   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,476
Репутация: 1667
По умолчанию

CreateFile
ReadFile
MultiByteToWideChar
WideCharToMultiByte
WriteFile
CloseFile
waleri вне форума   Ответить с цитированием
Старый 31.05.2018, 08:44   #3
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

waleri, спасибо
PS. Репутацию не получается увеличить, появляется сообщение, что надо кому-то ещё увеличить репутацию.
Drekon вне форума   Ответить с цитированием
Старый 31.05.2018, 23:46   #4
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Функция ReadFile возвращает массив байтов.
Массив байтов ведь нельзя подставить в функцию MultiByteToWideChar?
Значит нужно преобразовать массив байтов в текст, а затем текст передать в MultiByteToWideChar?
А с помощью какой Win32 API функции можно преобразовать массив байтов в текст?
Drekon вне форума   Ответить с цитированием
Старый 01.06.2018, 00:53   #5
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,476
Репутация: 1667
По умолчанию

Цитата:
Сообщение от Drekon Посмотреть сообщение
Массив байтов ведь нельзя подставить в функцию MultiByteToWideChar
Можно.
waleri вне форума   Ответить с цитированием
Старый 01.06.2018, 18:10   #6
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Признак кодировки я должен буду сам писать в коде? например для юникода в начале данных нужно записать два символа (или два кода - не разбираюсь в этом): &HFF, &HFE?
Drekon вне форума   Ответить с цитированием
Старый 01.06.2018, 18:45   #7
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,554
Репутация: 1916

icq: 216409213
По умолчанию

Цитата:
Сообщение от Drekon Посмотреть сообщение
Признак кодировки я должен буду сам писать в коде?
Как хотите и как вам надо.

Цитата:
Сообщение от Drekon Посмотреть сообщение
например для юникода в начале данных нужно записать два символа (или два кода - не разбираюсь в этом): &HFF, &HFE?
Не обязательно. И лучше разберитесь зачем эти два байта нужны там и в каком из УТФ они именно такие.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 01.06.2018, 18:53   #8
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

p51x, достаточно получить utf-текст с помощью "WideCharToMultiByte", записать его в текстовый файл с помощью "WriteFile" и после этого, если открыть этот текстовый файл в программе "Блокнот", программа "Блокнот" покажет, что у файла кодировка UTF-8?

PS. Не получается увеличить вам репутацию, появляется сообщение, что я должен увеличить репутацию ещё кому-то.
Drekon вне форума   Ответить с цитированием
Старый 01.06.2018, 18:58   #9
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,554
Репутация: 1916

icq: 216409213
По умолчанию

1. у блокнота плохова-то с утф, кроме утф-16
2. если сохранить файл в утф-16 и открыть в блокноте, то да он откроется и правильно прочитается
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 01.06.2018, 19:03   #10
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
Репутация: -14
По умолчанию

Я вот здесь смотрю в блокноте: открываю файл - далее "Файл" - Сохранить как - появляется диалоговое окно - читаю кодировку в списке "Кодировка".
Просто я пока плохо ориентируюсь в api-функциях и возможно где-то делаю ошибки, поэтому пока не могу проверить код. У меня не получается, чтобы в этом списке появился UTF-8 или Юникод (я пробовал сделать в двух кодировках).
Drekon вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт текстового файла в БД, смена кодировки Emmelman Microsoft Office Access 6 22.01.2013 17:52
определение кодировки текстового файла+вопрос s500 Общие вопросы Delphi 7 10.04.2012 20:59
Изменение имени текстового файла Fidarov Помощь студентам 2 10.02.2012 15:33
Определение кодировки текстового файла Sobaka_ru Помощь студентам 3 23.01.2012 09:41
Изменение кодировки файла. goodwen C# (си шарп) 4 15.12.2011 19:12


17:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru