Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 991

Кодировки в .net проектах

13.01.2026, 13:19. Показов 1079. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
понадобилось прочитать файл с кириллицей из файла.
просто так открыть кодировку 1251 нельзя и требуется сначала вызвать Encoding.RegisterProvider. (код ниже)
но этот вызов сбивает кодировку по умолчанию. с utf 8 на 1251.
то есть в коде ниже encoding1 и encoding2 будут разными. из-за этого неприятного побочного эффекта кое-где вылезают крокозабры.


C#
1
2
3
4
var encoding1 = Encoding.GetEncoding(0);
Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding(1251);
var encoding2 = Encoding.GetEncoding(0);

вопрос как можно без побочных эффектов прочитать файл, или вернуть Encoding.GetEncoding(0) кодировку по умолчанию в utf-8?

может уже есть подобная тема в интернетах, но что-то на удивление не гуглится.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2026, 13:19
Ответы с готовыми решениями:

Использование xml файлов для хранения данных в проектах asp.net mvc3
Всем привет, нужно сохранять данные модели не в базе даных а в xml файле, может ктото пробовал...

Обучение ASP.NET: На каких проектах можно лучше всего "набить руку"
Только стал на путь ASP.NET разработчика. Подскажите пожалуйста какой проект лучше всего...

Pure javascript или jquery в проектах ASP .NET MVC
Пишу на чистом javascript, и пока трудностей не возникало. Но по статистике многие используют...

12
2290 / 1606 / 400
Регистрация: 26.06.2017
Сообщений: 4,772
Записей в блоге: 1
13.01.2026, 13:23
Если не ошибаюсь, то методы чтения (файла, потока) в качестве одного из параметров принимают тип кодировки. Поэтому кодировку "по умолчанию" можно не трогать если установить этот параметр.
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,726
13.01.2026, 13:24
golosalex, не надо полагаться ни на какие умолчания. Если нужен UTF-8, то и запрашивай его явно:

C#
1
var encoding = System.Text.Encoding.UTF8;
Добавлено через 1 минуту
Цитата Сообщение от golosalex Посмотреть сообщение
но что-то на удивление не гуглится
Потому, что это вообще не проблема.
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 991
13.01.2026, 13:31  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Если нужен UTF-8, то и запрашивай его явно:
нужен windows 1251

но если использовать
C#
1
2
Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding(1251);
то можно прочитать файл в кодировке 1251, но слетит настройка по умолчанию.

это создает проблемы при использовании стороннего кода, который использует кодировку по умолчанию.
0
Эксперт .NET
 Аватар для Rius
13368 / 7823 / 1695
Регистрация: 25.05.2015
Сообщений: 23,820
Записей в блоге: 14
13.01.2026, 13:34
Цитата Сообщение от golosalex Посмотреть сообщение
но слетит настройка по умолчанию.
У кого, от чего, куда слетит от получения объекта кодировки?
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,726
13.01.2026, 13:35
golosalex, нормальный сторонний код запрашивает кодировки ЯВНО.

Цитата Сообщение от golosalex Посмотреть сообщение
нужен windows 1251
Так используй. Я о других частях кода, где нужен юникод.
1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,775
13.01.2026, 13:45
Лучший ответ Сообщение было отмечено golosalex как решение

Решение

А без регистрации вот так не работает?
C#
1
var enc = System.Text.CodePagesEncodingProvider.Instance.GetEncoding(1251);
1
Эксперт .NET
 Аватар для Rius
13368 / 7823 / 1695
Регистрация: 25.05.2015
Сообщений: 23,820
Записей в блоге: 14
13.01.2026, 13:50
Цитата Сообщение от kotelok Посмотреть сообщение
А без регистрации вот так не работает?
Работает.

Цитата Сообщение от golosalex Посмотреть сообщение
это создает проблемы при использовании стороннего кода
Это предусмотренное поведение, а не проблема:
Регистрация поставщика кодирования с помощью RegisterProvider метода также изменяет поведение методов Encoding.Encoding (Int32) и EncodingProvider.Encoding (Int32, EncoderFallback, DecoderFallback) при передаче аргумента 0 :
  • Если зарегистрированный поставщик — CodePagesEncodingProvider , метод возвращает кодировку, соответствующую системной активной кодовой странице при работе в операционной системе Windows.
  • Пользовательский поставщик кодировок может выбрать, какую кодировку следует возвращать, когда любой из этих GetEncoding перегрузок метода передается аргументом 0 . Поставщик может также выбрать не возвращать кодировку, выполнив EncodingProvider.GetEncoding возврат метода null .
https://learn.microsoft.com/ru... mework-4.8

Кто использует явно указанную кодировку, никаких проблем не имеет.
1
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 991
13.01.2026, 13:57  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Кто использует явно указанную кодировку, никаких проблем не имеет.
так это майкрософт дали такую возможность, ну и кто-то использует. я пострадавшая сторона

Цитата Сообщение от kotelok Посмотреть сообщение
А без регистрации вот так не работает?
работает.

Цитата Сообщение от Rius Посмотреть сообщение
У кого, от чего, куда слетит от получения объекта кодировки?
объяснять дольше чем попробовать. создайте консольный прокт с версией .net6 или выше и там запустите через дебагер код.
будет видно что метод Encoding.GetEncoding(0) вернет разную кодировку до и после установки провайдера. мне мешает потому что кое какой код от этого начинает делать кракозябры.
0
Эксперт .NET
 Аватар для Rius
13368 / 7823 / 1695
Регистрация: 25.05.2015
Сообщений: 23,820
Записей в блоге: 14
13.01.2026, 13:58
Цитата Сообщение от golosalex Посмотреть сообщение
объяснять дольше чем попробовать. создайте консольный прокт с версией .net6 или выше и там запустите через дебагер код.
Я запустил. Всё соответствует написанному в документации. Проблем никаких нет.
Цитата Сообщение от golosalex Посмотреть сообщение
мне мешает потому что кое какой код от этого начинает делать кракозябры.
Значит, этот код писали криворуки.
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 991
13.01.2026, 14:02  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Значит, этот код писали криворуки.
ну не совсем. этот код вылупляется при кодогенерации парсера в GPPG/Plex. вообще без понятия почему там генерируется парсер читающий поток байт из честной шарповой строки (в кодировке по умолчанию), но исправить это похоже будет непросто.

это старая программулина, раньше не было похожих проблем. это какое-то нововведение с этими кодировками
0
Эксперт .NET
 Аватар для Rius
13368 / 7823 / 1695
Регистрация: 25.05.2015
Сообщений: 23,820
Записей в блоге: 14
13.01.2026, 14:07
Поведение .Net в этой части сегодня уже иное, чем в .Net Framework. Да и винда изменилась.
Код может генериться в расчёте на использование в .Net Framework.
1
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 991
13.01.2026, 15:19  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Код может генериться в расчёте на использование в .Net Framework.
думаю в этом и причина. в фреймворке как будто работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2026, 15:19

Правильная организация соединения с MySQL базой в ASP.NET MVC проектах
Здравствуйте! Столкнулся с одной серьезной проблемой, поэтому в поисках совета. Суть:...

Файл Global.asax.cs в asp.net проектах
Решил изучить asp.net mvc. В интернете поискал книги, и нашёл "Asp.net mvc 4 framework с примерами...

Самый популярный менеджер клиентских библиотек в ASP.NET Core проектах?
Что используют сейчас?

Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2
Здравствуйте. Я в бекенд разработке полный ноль. В чем разница между вышеперечисленными...

Библиотека ABCpdf NET - настройка кодировки
В Adobe Designer ES4 создаю несколько полей (TextField) с определенной настройкой (Times New Roman,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru