Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_1 / С_17_Работа с файлами.ppt
Скачиваний:
18
Добавлен:
19.04.2015
Размер:
1.71 Mб
Скачать

Если открыть наш файл в блокноте, то получится следующее:

Первая и вторая строка записаны слитно!

Это вызвано разным способом завершения их записи в файл: sw.Write("Строка 1\n");

sw.WriteLine("Строка 2");

Если

то видно, что «строка 1» завершается байтом 0A, а «строка

2» - двумя байтами OD и 0A, что более верно.

Непонятна также и запись текста этих строк. Проблема в том, что существуют различные кодировки (способы записи) символов с помощью байт. Во всех кодировках латинские символы (a, s, d, f, …), цифры (0, 1, …, 9) и знаки (+, -, *, …) записываются одинаковыми байтами, а для национальных

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

Кодировка символов задается в конструкторе, создающем

выходной поток данных. Например, при создании потока текстовых строк StreamWriter мы можем указать в третьем параметре конструктора нужную нам кодировку:

StreamWriter sw = new StreamWriter(testFile, false,

System.Text.Encoding.UNICODE);

Кодировка указывается как статическое свойство класса System.Text.Encoding.

Возможные варианты кодировки:

ASCII Кодировка ASCII без символов кириллицы, в которой для представления текстовых символов используются младшие 7 бит байта

Unicode Кодировка UNICODE. Для представления символов используется 16 бит (т. е. 2 байта)

UTF7 Применяется для представления символов UNICODE. В

ней используются младшие 7 бит данных

UTF8 То же, но для представления символов UNICODE в ней

используется 8 бит данных

Default Системная кодировка ANSI (не путать с кодировкой ASCII).

В этой кодировке для представления каждого символа используется 8 бит данных