Encoding.Default.GetString ведет себя по-разному между .NET core и 4.6.2 [duplicate]

Для отправки электронной почты должна быть какая-то базовая структура. Это можно сделать через PHP / ASP.NET или с локальным почтовым клиентом. Если вы хотите, чтобы пользователь ничего не видел, лучший способ - использовать их при вызове AJAX в отдельный файл send_email.

1
задан gsharp 8 September 2017 в 15:33
поделиться

1 ответ

Согласно официальной странице MSDN , кодировка по умолчанию не фиксирована - это зависит от настроек ОС. Если вы знаете, какая кодировка файла имеет, укажите это!

EDIT: Затем попробуйте распечатать данные кодировки (например, имя) из .net framework, который работает. Затем укажите то же самое в ядре .net 2. Не полагайтесь на значение по умолчанию. Эта страница MSDN, Список кодировок в образце кода содержит список поддерживаемых кодировок.

UPDATE by gsharp: Мне пришлось ссылаться на пакет NuGet System.Text.Encoding.CodePages, зарегистрировать их и использовать его

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 var enc1252 = Encoding.GetEncoding(1252);

 var inStr = new StreamReader(infile, enc1252);
 var outStr = new StreamWriter(outFile, false, enc1252);
4
ответ дан gsharp 15 August 2018 в 15:19
поделиться
  • 1
    @gsharp отредактировал мой пост – Michael 8 September 2017 в 15:40
  • 2
    вы указали мне в правильном направлении. Изменит ваш ответ с моими выводами. – gsharp 11 September 2017 в 08:09
  • 3
    У меня была аналогичная проблема, и это решило ее. CORE по умолчанию отказался от UTF-8, но код в моем предыдущем решении 4.6.2 по умолчанию не был Win-1252. Также можно вызвать пакет следующим образом: var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252); – bharris9 10 August 2018 в 19:45
Другие вопросы по тегам:

Похожие вопросы: