Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
38 / 2 / 0
Регистрация: 29.04.2011
Сообщений: 51

Чтение из файла в нужной кодировке (трудности перевода с VB 6.0)

27.05.2015, 20:18. Показов 3392. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

При переписывании старого "шестого" кода обнаружил, что FileOpen() работает с ANSI. Мне требуется UTF-8, поэтому решил использовать System.IO.File. Но тут возникло недопонимание сути работы методов , да и много их так чё-то))

Напомню, что для записи в файл было либо через Output (полная перезапись файла), либо через Append (добавление строк в конец файла). Насколько я понял, Append теперь более-менее соответствует метод AppendAllText(), про Output напишу ниже.

Для чтения из файла был режим Input, при этом я использовал способ Line Input. То есть из файла читалось по одной строке.

И вот тут у меня возникает недопонимание. Чтение производилось примерно так:
Visual Basic
1
2
3
4
5
6
Open "file.txt" For Input As #1
Do Until EOF(1)
    Line Input #1, MyLine
    *тут какие-нибудь действия со строкой MyLine
Loop
Close #1
Перезапись файла - так:
Visual Basic
1
2
3
4
5
Open "test.dat" For Output As #1
For I = 0 To KolichestvoStrok - 1
    Print #1, MyLine(I)
Next
Close #1
Никак не могу понять, есть ли что-то близкое к этим способам в версии .NET? Если нет, то что посоветуете использовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2015, 20:18
Ответы с готовыми решениями:

Чтение из файла в нужной кодировке
Си не видит русские буквы в текстовом файле. Вот сама задача "Дан файл, содержащий текст, включающий русские и английские слова....

Чтение файла в нужной кодировке
Здравсвуйте, помогите разобраться, нужно при загрузке файла прочитать строки и записать их в БД, кодировка файла изначально не известна,...

Чтение из файла в нужной кодировке
Помогите, пожалуйста. Я делаю считывание из файла при помощи StreamReader и считываю данные посимвольно, но вместо нужных мне символов он...

6
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
27.05.2015, 20:46
zusicks438, в принципе, эти костыли можно реализовать и в VB .NET
Но лучше посмотреть тут https://www.cyberforum.ru/post1942265.html
1
38 / 2 / 0
Регистрация: 29.04.2011
Сообщений: 51
27.05.2015, 20:52  [ТС]
Памирыч, то есть лучше читать в массив, редактировать в массиве и сохранять из массива? Ну что ж, спасибо, тогда придётся немного переписать код.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
27.05.2015, 21:05
zusicks438, зависит от задачи. Смотря как происходит запись и как считывание и в какие моменты.

В любом случае, в .NET работа с файлами продумана так, что эти костыли из первого поста утратили всякую актуальность.

Насколько мне известно, во Framework 4 или старше в работе с файлами были добавлены дополнительные функции
0
38 / 2 / 0
Регистрация: 29.04.2011
Сообщений: 51
27.05.2015, 21:45  [ТС]
Что-то непонятное...

Написал следующий код прямо при старте программы (Form Load), вывожу в ListBox через массив, потому что с массивом ещё хочу поработать перед выводом, но пока без этого:
VB.NET
1
2
3
4
5
Dim WordsMassive() As String = IO.File.ReadAllLines(FileName, System.Text.Encoding.UTF8)
        WordsAmount = WordsMassive.Length
        For K = 0 To WordsAmount - 1
            lstMain.Items.Add(WordsMassive(K))
        Next
ListBox у меня в проекте, сконверченном из VB6, так что я его (листбокс) на всякий случай создал заново. Файл с входными данными сконвертирован (именно сконвертирован) в UTF-8 без BOM через Notepad++. Но у меня кодировка всё равно неправильная на выходе В ListBox на месте русского языка отображаются кракозябры, как при попытке прочитать UTF-8 в качестве ANSI. Что характерно, я пытался изменить System.Text.Encoding на какой-нибудь UTF32 или ANSI, но в результате вывод в ListBox всё равно получался точно таким же.

Маленькая деталь (возможно, не имеет значения): при кодировании файла в UTF-8 без BOM и кодировании файла в обычном UTF-8 в ListBox отображаются "кракозябры" в первой строке (что само по себе логично, но мало ли).
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
27.05.2015, 21:55
Пока сложно сказать, я как-то не мудрил с кодировками, известно лишь, что читать файл лучше в той кодировке, в какой его записывали.
Другими словами, если Вы записали файл в UTF-8, то некоторые символы, в т.ч. кириллица, не могут быть корректно прочтены в других кодировках.
0
38 / 2 / 0
Регистрация: 29.04.2011
Сообщений: 51
27.05.2015, 22:42  [ТС]
Памирыч, в принципе есть ещё второй вариант, что я зря беспокою общественность) Сейчас создал новый проект, добавил туда листбокс, вписал тот же код, положил в папку с exe тот же файл...ну блин, оно работает, вполне себе неплохо. То ли я опять кривой, то ли конвертация. Сейчас буду шерстить код. Эх, а так хотелось маленького чуда

Добавлено через 44 минуты
Памирыч, уррррааааа! Впервые радуюсь тому, что у меня таки кривые руки! Срабатывала старая функция при наступлении события, которое в VB6 наступало немножко при другом условии.

Файл открывается нормально, в UTF-8. Надеюсь, что с записью проблем не возникнет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2015, 22:42
Помогаю со студенческими работами здесь

Чтение текста из файла в нужной кодировке
В общем есть некий текс в кодировке "UTF-8" но он читается в тексбоксе ироглифами... Как поменять кодировку в самом текстбоксе вариант ...

Считывание из файла в нужной кодировке
Почему при считывание файла выдает кракозябры ? Содержимое файла: char *text; ifstream read; ...

Открытие файла в нужной кодировке
Необходимо открыть запранее записанный файл в форме. Однако вместо русского текста выдает символы. Что не так? using System; ...

Открытие текстового файла в нужной кодировке
Доброго времени суток) При открытии текстового документа,содержащего кириллицу выводит кракозябры. private void open_Click(object...

Загрузка DBF файла в нужной кодировке
Пытаюсь подключится к DBF фалу и получаю следующее исключение. "Дополнительные сведения: ERROR Внешняя таблица не имеет предполагаемый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru