Исправление автоматического преобразования не английских символов в Unicode Hex Character (кракозябры) в .net core


Опубликовано 30.03.2019 16:14 | Автор: Admin

В данной статье рассматривается:
В .net core в представлениях (Razor) теперь все не английские символы автоматически конвертируются в соответствующий HEX код. Выглядело это примерно так: Пе&
Я столкнулся с такой проблемой и сейчас мы посмотрим как это исправить.



Когда вы пытаетесь вывести текстовые данные в представлении (HTML странице) на языке отличном от английского, то вы получаете, что все символы кодируются в Unicode Hex Character (я назову их кракозябры), при этом браузер обрабатывает эти кракозябры нормально и вы видите нормальный русский текст, но в исходном коде страницы вы можете увидеть все русские надписи в виде:

Пер

К примеру, вы написали код в представлении:

@{
string txt="текст на русском";
@txt
}
//при исполнении данного кода, у вас будет введено:
Пер&

Для решения этой особенности мне пришлось все выводы производить при помощи @Html.Raw(), но в один прекрасный момент я нашел решение см. Оригинал решения

Решение проблемы:
Находим в проекте файл Startup.cs и вносим следующие изменения:

public void ConfigureServices(IServiceCollection services)
{
    ....
    //Чтобы кириллические символы не переводились в соответствующий Unicode Hex Character Code
    services.Configure(options =>
    {
        options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
    });
}
Необходимо так же будет добавить:
using Microsoft.Extensions.WebEncoders;
using System.Text.Encodings.Web;
using System.Text.Unicode;
Теперь у нас все выводиться как надо.

Метки
.Net Core C# Visual Studio Заметка

Комментариев: 0

 9 |


Добавить комментарий:
Отправить