5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
1

Чтение из файла и сохранение в файл

28.12.2018, 20:41. Показов 1552. Ответов 11
Метки нет (Все метки)

Здравствуйте.
Работаю с текстовым файлом формата .txt. Считывается текст из файла, который затем встраивается в аудиофайл. Затем обратными преобразованиями этот текст извлекается из аудиофайла и записывается в файл.
Проблема:
а) если для считывания использовать кодировку UTF8, а для записи Win-1251, то текст в результирующем текстовом файле совпадает с исходным, НО размеры этих двух .txt файлов отличаются;
b) если для считывания использовать кодировку Win-1251, а для записи Win-1251, то текст в результирующем текстовом файле НЕчитаем (набор символов), ЗАТО размер этих двух .txt файлов совпадает;
с) если для считывания использовать кодировку UTF8 или Win-1251, а для записи UTF8, то текст в результирующем текстовом файле НЕчитаем (набор символов), ЗАТО размер этих двух .txt файлов совпадает;
Спасибо.

Чтение:
C#
1
var sr = new StreamReader(txtBox.Text, Encoding.GetEncoding(1251));
Запись:
C#
1
File.WriteAllText(txtBox.Text, extrMessage, Encoding.GetEncoding(1251));
C#
1
2
txtBox.Text - путь к файлу
extrMessage - извлеченный текст из аудифайла
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2018, 20:41
Ответы с готовыми решениями:

Сохранение и чтение объекта класса в файл/из файла
Добрый день! Столкнулся с проблемой сохранения объекта класса в файл, и последующего его...

Сохранение массива в файл и чтение массива из файла
Имеется массив: int region_coordinates; Надо его записать в файл(неважно, в каком формате,...

Чтение и сохранение из/в файл
Добрый день. Требуется дополнение к коду. Нужно читать элементы из файла в динамический массив и...

Чтение и сохранение в файл
Добрый день! Помогите делаю прогу, к-я по входным параметрам a,b,c вычисляет x,y,z.(компоненты...

11
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 20:50 2
Читать файл надо в той кодировке в которой он записан.
Раз Ваш исходный файл записан в кодировке UTF8, то и читать надо в этой же кодировке - это без вариантов.
Записывать надо в той кодировке, в которой будет вестись его визуализация. Если Ваш просмотрищик текста (или редактор) работает в 1251, то записывать надо в этой кодировке. Если он может просматривать в обоих кодировках, то записывайте в любой. Но не у всякого редактора есть автоматическое определение кодировки. Допустим, для стандартного Блокнота, надо выбрать вручную подходящий для кодировки шрифт.
Что касается размера, то один и тот же текст в 1251 будет примерно в 2 раза больше чем в UTF8. Это особенность кодировки.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
28.12.2018, 20:54  [ТС] 3
Элд Хасп, оно так и получается, как Вы описали. И к какому решению придти? И не может ли быть такого, что файл записан в кодировке UTF8, но отображается непосредственно в Win-1251?
0
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 21:08 4
Цитата Сообщение от Alex7676 Посмотреть сообщение
И не может ли быть такого, что файл записан в кодировке UTF8, но отображается непосредственно в Win-1251?
Нет. Но редактор (или виевер) может сам автоматически определить какая кодировка и переключиться в неё. Првда сейчас это редкая функция у редакторов. Раньше, из-за многочисленности применения различных кодировок, такая фича встречалась у многих редакторов.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
28.12.2018, 21:12  [ТС] 5
Элд Хасп, тогда не могли бы вы подсказать, как исправить: текст в файле .txt записан в кодировке UTF8. При записи текста в .txt файл в кодировке UTF8, в самом файле получается набор символов, а не набранный текст. Как это исправить?
0
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 21:16 6
Цитата Сообщение от Alex7676 Посмотреть сообщение
, тогда не могли бы вы подсказать, как исправить: текст в файле .txt записан в кодировке UTF8. При записи текста в .txt файл в кодировке UTF8, в самом файле получается набор символов, а не набранный текст. Как это исправить?
Первоначальный файл Вы чем просматриваете?

Добавлено через 1 минуту
И у Вас в примере кода указано, что Вы читаете исходный файл в кодировке 1251? Или это неверный пример?
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
28.12.2018, 21:18  [ТС] 7
Элд Хасп, пример дан без привязки к кодировке. Просто показать, как происходит непосредственно чтение/запись.
Если с компьютера, то это обычный .txt файл, который просматриваю стандартным Windows редактором текстовых файлов (блокнот). Если в среде программирования, то командой, которая описана в первом посте.
0
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 21:26 8
Цитата Сообщение от Alex7676 Посмотреть сообщение
пример дан без привязки к кодировке. Просто показать, как происходит непосредственно чтение/запись.
Если с компьютера, то это обычный .txt файл, который просматриваю стандартным Windows редактором текстовых файлов (блокнот). Если в среде программирования, то командой, которая описана в первом посте.
Блокнот по умолчанию просматривает в кодировке 1251. С чего Вы взяли, что у Вас входной формат UTF8 ?

Вы вот этой строкой читаете файл ?
C#
1
var sr = new StreamReader(txtBox.Text, Encoding.GetEncoding(1251));
Если нет - напишите какой.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
28.12.2018, 21:53  [ТС] 9
Элд Хасп, читаю файл этой командой (в первом посте ошибка):
C#
1
text = File.ReadAllText(txtBox.Text, Encoding.UTF8);
При считывании .txt файла с помощью Encoding.UTF8 текст в отладчике отображается корректно. Но велика вероятность, что я что-то путаю, поэтому и обратился за помощью.

Добавлено через 14 минут
Элд Хасп, и если производить запись в текстовый файл в кодировке Win-1251, то текст будет нечитаем.
0
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 21:56 10
Цитата Сообщение от Alex7676 Посмотреть сообщение
При считывании .txt файла с помощью Encoding.UTF8 текст в отладчике отображается корректно. Но велика вероятность, что я что-то путаю, поэтому и обратился за помощью.
Добавлено через 14 минут
Элд Хасп, и если производить запись в текстовый файл в кодировке Win-1251, то текст будет нечитаем.
Ни как не пойму. Скиньте файл сюда. Открою у себя - посмотрю.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
28.12.2018, 22:05  [ТС] 11
Элд Хасп,
test1.txt
Win-1251.txt
Записанный файл в кодировке UTF8 не загрузился на форум из-за ограничения размера (его размер увеличился почти в два раза и файл нечитаем).
0
Модератор
Эксперт .NET
10430 / 7404 / 2032
Регистрация: 21.04.2018
Сообщений: 22,352
Записей в блоге: 2
28.12.2018, 22:20 12
Файл test1.txt у Вас читается командой string text = File.ReadAllText("test1.txt", Encoding.Default); Это кодировка 1251. Если читать Encoding.UTF8 - то в text неправильные символы.

Добавлено через 4 минуты
Если явно задавать кодировку, то так
C#
1
               string text = File.ReadAllText("test1.txt", Encoding.GetEncoding("windows-1251"));
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2018, 22:20

При сохранение файла word (права доступа на сохранение ограничены) появляется пустой файл
Добрый день! Проблема такая: Допустим есть пользователь, у которого ограничены права (может...

Чтение и сохранение файла
Почти закончила лабораторную...и закосячила с функциями для работы с файлами(Write_File,Read_File)...

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

Сохранение и чтение из файла
Доброго времени суток. Как записать несколько переменных в один файл и затем их из этого же файла...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.