Неправильная кодировка текста в строке, отправленной в JavaScript - PullRequest
5 голосов
/ 09 июня 2011

У меня есть метод javascript, который получает строку в кодировке UTF-8 (ViewBag.errorText) и использует ее в качестве параметра для новой функции.

Проблема заключается в том, что текст, отображаемый в show_error_dialog, отображает экранированные символы html (æ&#248 и т. Д.), А не предназначенный (""åø" и т. Д.).

Я предполагаю, что проблема заключается в прилагаемых тегах <text>, но, похоже, не могу обойти это.

<script type="text/javascript" charset="utf-8">
    function performLoadOperations() {
        @if(ViewBag.errorText!= null) {
            <text>show_error_dialog('@ViewBag.errorText');</text>
        }
    }
</script>

Ответы [ 4 ]

12 голосов
/ 09 июня 2011

Я думаю, что весь текст, вставленный в Razor, по умолчанию закодирован в HTML. Используйте Html.Raw() для передачи строки без кодировки.

<script type="text/javascript" charset="utf-8">
    function performLoadOperations() {
        @if(ViewBag.errorText!= null) {
            <text>show_error_dialog('@Html.Raw(ViewBag.errorText)');</text>
        }
    }
</script>
3 голосов
/ 12 января 2012

Использование: @ Html.Raw (Ajax.JavaScriptStringEncode (Model))

для безопасной вставки значений в javascript

0 голосов
/ 09 июня 2011

просто используйте javascript escape функция:

function encode_utf8( s )
{
  return unescape( encodeURIComponent( s ) );
}

function decode_utf8( s )
{
  return decodeURIComponent( escape( s ) );
}
0 голосов
/ 09 июня 2011

Я не уверен, но я думаю, что была функция unescape () с js.Попробуйте передать свой текст с ним.Это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...