Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/302: Рейтинг темы: голосов - 302, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 12
1

Задать кодировку Windows-1251 для файла

14.05.2014, 14:27. Показов 56637. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Проблема в том что кодировка изменяется на UTF-8,но требуется на Windows-1251.
Что не так?
Заранее спасибо.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button2_Click(object sender, EventArgs e)
        {
            Encoding Code = Encoding.GetEncoding(1251);
            string Str = string.Empty;
            using (System.IO.StreamReader Reader = System.IO.File.OpenText(Form1.filename))
            {
                Str = Reader.ReadToEnd();
            }
            Str = Str.Replace("111", "123");
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(Form1.filename))
            {
                file.Write(Str,Code);//Тут мы меняем кодировку,в чем ошибка?
            }
            MessageBox.Show("Работа выполнена успешно!");
            this.Close();
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2014, 14:27
Ответы с готовыми решениями:

Перевести фамилию в кодировку Windows 1251
Закодируйте и разместите в разрядную сетку свою фамилию, используя базовую таблицу кодировки...

Изменить кодировку строки UTF-8 to windows-1251
получаю из хмл текст, он весь в UTF-8. как изменить кодировку строки UTF-8 to windows-1251? если...

Можно ли использовать кодировку Windows-1251 в WP7
Добрый день! Решил посмотреть что представляет из себя Windows Phone 7 и написать тестовое...

Как задать кодировку для файла?
<?php header('Content-Type: text/html; charset= utf-8'); ini_set('display_errors','On');...

4
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
14.05.2014, 14:30 2
А где Вы видите, что она "подменилась" на UTF8?
0
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 12
14.05.2014, 14:31  [ТС] 3
Spawn, Проверял кодировку файла после работы программы
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
14.05.2014, 14:38 4
C#
1
2
3
4
            File.WriteAllText("c:\\utf8.txt", "123", Encoding.UTF8);
            File.WriteAllText("c:\\win1251.txt", "123", Encoding.GetEncoding(1251));
            long utf8Size = new FileInfo("c:\\utf8.txt").Length;        //6
            long win1251Size = new FileInfo("c:\\win1251.txt").Length;  //3
Я чего-то не так сделал?
0
Администратор
Эксперт .NET
17481 / 13714 / 5288
Регистрация: 17.03.2014
Сообщений: 28,155
Записей в блоге: 1
14.05.2014, 14:50 5
Лучший ответ Сообщение было отмечено Iiisi как решение

Решение

Iiisi, кодировку следует передавать конструкторам StreamReader и StreamWriter. Вызов file.Write(Str,Code) не менял кодировку. Ты вызывал вот эту перегрузку Write предназначенную для форматированного вывода.

Правильно будет так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void button2_Click(object sender, EventArgs e)
{
    Encoding win1251 = Encoding.GetEncoding(1251);
    
    string str;
    using (var reader = new StreamReader(Form1.filename, win1251))
    {
        str = reader.ReadToEnd();
    }
    
    str = str.Replace("111", "123");
    
    using (var writer = new StreamWriter(Form1.filename, false, win1251))
    {
        writer.Write(str);
    }
    
    MessageBox.Show("Работа выполнена успешно!");
    this.Close();
}
Или так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void button2_Click(object sender, EventArgs e)
{
    Encoding win1251 = Encoding.GetEncoding(1251);
    
    string str = File.ReadAllText(Form1.filename, win1251);
    
    str = Str.Replace("111", "123");
    
    File.WriteAllText(Form1.filename, str, win1251);
    
    MessageBox.Show("Работа выполнена успешно!");
    this.Close();
}
0
14.05.2014, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2014, 14:50
Помогаю со студенческими работами здесь

Как изменить кодировку символов с Windows-1251 на UTF-8?
Здравствуйте. Не давно начал изучать HTML, XHTML, CSS. Столкнулся с небольшой проблемой. Изучаю...

Перекодировать строку из кодировки KOI в кодировку Windows-1251 и обратно
Кодировщик. Написать программу, перекодирующую строку в кодировке KOI в строку в кодировке...

Можно ли изменить кодировку Windows-1251 на Utf-8 при помощи Cmd.exe?
В бух.7.7 создал файл.txt, нужно сохранить его в utf-8. Средства 1с77 позволяют менять кодовую...

Как в iframe задать кодировку для текстового файла, на который он ссылается
Есть тег iframe, который ссылается на текстовый файл. В текстовом файле есть русский текст. Он...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru