Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

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

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

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт текстового файла в БД, смена кодировки 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