Символ С отображается неправильно как С в HTML SELECT - PullRequest
0 голосов
/ 29 января 2020

У меня есть приложение ASP. NET MVC. В одной из форм у меня возникли проблемы с кодировкой символа С. Это показано ниже:

Ñ 

Эта форма имеет несколько объектов, таких как TextBoxFor и select, среди прочего. Первоначально, когда страница загружается впервые, символ С отображается корректно во всех html объектах (TextBoxFor, Select среди других). После того, как я заполнил все поля, я нажимаю кнопку сохранения, чтобы сохранить значения в базе данных. Затем страница перезагружается и сохраняет все поля заполненными (они не очищаются).

После перезагрузки страницы символ С отображается следующим образом:

Ñ 

в html Выберите объект ниже:

<select class="form-control" id="street" name="street"></select>

, но в других объектах, таких как так как TextBoxFor корректно отображается как С:

@Html.TextBoxFor(model => model.DepartmentName, new { @class = "input-xmediumlarge" }, (bool)( !ViewBag.ReadOnly), true)

Html Выбранный объект заполняется из запроса к базе данных. Пока пользователь вводит в него символы, поиск выполняется на лету (с использованием JQuery), и элементы, содержащие эту строку, отображаются для выбора. Элементы, показанные на лету, которые содержат символ С, отображаются правильно. Проблема в том, что после сохранения значений и перезагрузки страницы. Символ С отображается неправильно в html объект выбора. Это происходит только в выбранном объекте. Во всех других объектах символ С отображается корректно.

Я указал следующие утверждения в разделе заголовка страницы:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />

Кроме того, представление CS html сохраняется как UTF. -8. Я проверил это с помощью Notepad ++, выполнив следующие действия: Откройте файл в Блокноте. Нажмите «Сохранить как ...». В поле со списком «Кодировка:» я вижу текущий формат файла UTF-8.

Так что я делаю не так?

ОБНОВЛЕНО : Я отладил и проверил сгенерированный исходный код браузером inte rnet (chrome, firefox и т. д.), и я вижу проблему в том, что при установке de html выберите значение с помощью jquery, как показано ниже:

$('#street').val('@Model.street');

Выше строки интерпретируется браузером inte rnet, как показано ниже:

$('#street').val('PE&#209;ALBES');

, поэтому в html объект выбора отображается как:

PE&#209;ALBES

вместо PEÑALBES .

1 Ответ

0 голосов
/ 31 января 2020

Наконец-то я решил ее, применив ниже javascript найденную функцию здесь :

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

$('#street').val(decodeHtml('@Model.street'));

вместо ниже:

$('#street').val('@Model.street');

Другие интересные посты abount это ниже:

...