Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6461
Последний выпуск: 19.06.2015

Чтение из файла в C#

8.4K
01 октября 2004 года
virk
2 / / 30.09.2004
При чтении из файла в С# не читаются русские буквы, как будто их вообще нет. Может кто-нибудь сталкивался с похожей проблемой? Скажите, как это лечить?
Код следующий:
...
string fullpath;
fullpath = Path.GetFullPath("test.txt");
Console.WriteLine("File at:");
Console.WriteLine(fullpath);

using (StreamReader sw = File.OpenText(fullpath))
{
while (((st=sw.ReadLine())!=null))
Console.WriteLine(st);
}
8.1K
01 октября 2004 года
Antoshka
5 / / 09.08.2004
во этом примере, взятом из MSDN показывается как это делается (все дело в кодировке)

' Open the stream and read it back.
fs = File.Open(path, FileMode.Open, FileAccess.Read)
Dim b(1024) As Byte
Dim temp As UTF8Encoding = New UTF8Encoding(True)

Do While fs.Read(b, 0, b.Length) > 0
Console.WriteLine(temp.GetString(b))
Loop

Вместо UTF8Encoding подсовываешь свою кодировку.

Ссылка на страницу в локальном MSDN (апрель 2004):
ms-help://MS.MSDNQTR.2004APR.1033/cpref/html/frlrfsystemiofileclassopentopic.htm
8.1K
01 октября 2004 года
Antoshka
5 / / 09.08.2004
Извини, что на VB, думаю разберешься, как это на C#.
2.1K
29 февраля 2008 года
AD_min
36 / / 11.02.2004
Вроде вот это должно работать:
using System.IO;
string path = @"c:\test.txt";
if (File.Exists(path))
{
string buf = File.ReadAllText(path, Encoding.UTF8);
MessageBox.Show(buf);
}

В принципе тут StreamReader можно и не использовать, если тебе не нужно дополнительных операций кроме чтения.
36K
09 декабря 2008 года
vagiz
14 / / 30.08.2008
Цитата: AD_min

string path = @"c:\test.txt";


Прошу прощения за, быть может, не совсем уместный вопрос, но что обозначает в данном случае символ "@"?

7
09 декабря 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vagiz
Прошу прощения за, быть может, не совсем уместный вопрос, но что обозначает в данном случае символ "@"?


Это так называемая verbatim-string, в ней отключены эскейп-последовательности (кроме двойных кавычек) и такой string может располагаться на нескольких строках в исходном тексте.

79K
26 декабря 2011 года
bad-dimka
1 / / 26.12.2011
Простой код для решения проблемы с чтением русских символов может кому нибудь пригодится
openFileDialog1.ShowDialog();
string filename = openFileDialog1.FileName;
string text = File.ReadAllText(filename, System.Text.Encoding.GetEncoding(1251));
richTextBox1.AppendText(text+"\n");
char[] ch = new char[text.Length];
ch = text.ToCharArray();
295
26 декабря 2011 года
koodeer
1.2K / / 02.05.2009
Цитата: bad-dimka

openFileDialog1.ShowDialog();
string filename = openFileDialog1.FileName;


А если пользователь нажал Cancel в диалоге?


Цитата: bad-dimka

string text = File.ReadAllText(filename, System.Text.Encoding.GetEncoding(1251));


А если кодировка в файле, например, UTF-8?


Цитата: bad-dimka

richTextBox1.AppendText(text+"\n");


Литерал "\n" - не комильфо. Используйте Environment.NewLine.


Цитата: bad-dimka

char[] ch = new char[text.Length];
ch = text.ToCharArray();


Руки бы отрывать за такой код... Для чего создавать массив, и тут же терять на него ссылку?

9.6K
15 января 2012 года
Ozz
32 / / 06.03.2006
Что-то понаписали так много всего, что суть затерялась. Проблема скорее всего в том, что текст в файле не в той кодировке, используя которую, ты читаешь его. Короче, проверь кодировку файла, укажи такую же кодировку при открытии файла. И не запаривайся с потоками - сделай что-то типа

Цитата:
Console.WriteLine(File.ReadAllText(....));



"Дёшево и сердито"

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог