Отключить кодировку символов Unicode в ASP.NET-MVC3

На моем сайте каждый текст используется как UTF-8.

Поскольку в настоящее время каждый браузер поддерживает символы Юникода, я бы хотел использовать их как есть.

The asp.net framework is very helpful by replacing any unicode with a Numeric Character Reference, like á. For reference check: http://en.wikipedia.org/wiki/Unicode_and_HTML#HTML_document_characters

Несомненно, таким образом веб-страница корректно отображается в самом старом netscape, но, например, у модуля электронной коммерции Google Analytics есть некоторые проблемы с пониманием этих специально закодированных символов.

Есть ли способ глобально отключить кодировку с числовым символом?

Например, я хочу писать в бритве:

@ViewBag.Title

Я бы хотел, чтобы это отображалось на выходе:

Számítástechnika

Не это:

Számítástechnika

Я не пытаюсь отключить кодировку html, поэтому Html.Raw не является решением, так как я не могу гарантировать, что @ ViewBag.Title не будет содержать что-то вроде этого:

<script>alert('injected hahahah');</script>

Поэтому я доволен автоматической кодировкой специальных html-символов. Это не то, что я хочу отключить.

Я бы не хотел реструктурировать весь код, и я подумал, что должен быть «глобальный переключатель», чтобы отключить такое поведение при использовании строковых параметров в бритве. Есть ли способ сделать это?

Также я могу явно запретить ссылки на числовые символы, например, с чем-то вроде new MvcHtmlString (myString, некоторые параметры) ?

3
nl ja de

2 ответы

Я боюсь, что вы не можете отключить эту функцию кодирования. Эта «приятная» функция предоставляется WebUtility.HtmlEncode , и вы не можете влияют на кодирование.

Однако при запуске .net 4.0 вы можете настроить поведение кодировки, создав класс, который наследуется от HttpEncoder , и настройте его в web.cofig HttpRuntimeSection.EncoderType . Но вам нужно реализовать свою собственную логику кодирования.

Luckily .net 4.5 ships with a new HttpEncoder which encodes the bad stuff (like <script>) however handles the Unicode characters correctly called AntiXssEncoder

Поэтому вам просто нужно добавить это в свой web.config:


        

Если вы еще не в .net 4.5, вы можете реализовать свой AntiXssEncoder с помощью Microsoft Web Protection Library

Вот статья, как ее настроить: Использование AntiXss в качестве кодировщика по умолчанию для ASP.NET (хотя он может быть устаревшим)

3
добавлено
Спасибо за ответ, я рассмотрю AntiXssEncoder и, если он удовлетворит мои потребности, я соглашусь с этим.
добавлено автор SoonDead, источник
AntiXssEncoder - это собственные причуды, поэтому я решил не использовать его и принять кодировку Юникода, но так как вы ответили на вопрос, то он принят.
добавлено автор SoonDead, источник
@Frank К сожалению, я действительно не помню его вообще. Я мог бы извлечь что-то из компании vcs, но это займет больше времени, чем я готов посвятить этому.
добавлено автор SoonDead, источник
Этот метод требует некоторой серьезной переделки, он фактически преобразует символы из U + 00A0 в U + 00FF в числовые объекты html, оставляя остальную часть unicode нетронутой. Так, например, смарт-кавычки были бы нетронутыми, но ä преобразован в â
добавлено автор Esailija, источник
@SoonDead, могу ли я спросить, как использовать вашу идею принять кодировку Юникода в Web.config ASP.NET, является секцией httpRuntime encoderType? Спасибо.
добавлено автор Frank, источник

Вы также можете использовать метод @ Html.Raw для mvc.This полезен там, где вы не хотите делать это на глобальном уровне, иногда на уже построенном проекте.

@Html.Raw(@ViewBag.Title)
1
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)