Сохраненная лигатура HTML не рендерит

Я использую GroupDocs Viewer, чтобы взять PDF и создать страницу HTML для него. Я храню HTML в поле nvarchar(MAX) в моей базе данных SQL2012. Я только сегодня узнал во время некоторого тестирования, что у нас есть некоторые специальные символы (лигатуры) в документах, которые не отображаются правильно.

Знаки вопроса выделены только для того, чтобы их было легко найти.

Эти лигатуры (fl, fi, ff) отсутствуют по некоторым причинам. Я проверил свою базу данных, и они, кажется, хранятся там правильно.

Я проверил метод сервера JsonResult, который я использую для загрузки страницы, и я получаю несколько смешанных результатов, пытаясь определить, есть ли в строке pageHtml символ.

public async Task<JsonResult> LoadDocument(int contentID, int page)
{
    try
    {
        var documentPageData = await APIAccess.Get<DocumentPageUserData>(DocumentPageData.GetDocumentPageRoute, contentID, CurrentUser.UserID, page);

        JsonResult result = new JsonResult()
        {
            ContentEncoding = Encoding.Default,
            ContentType = "application/json",
            Data = new
            {
                pageHTML = documentPageData.DocumentPage.PageHtml //.Replace("?", "fl").Replace("?", "fi").Replace("?", "ff")      //Don't like this idea
            },
            JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            MaxJsonLength = int.MaxValue
        };

        return result;
    }
    catch (Exception ex)
    {
        return Json(string.Format("There was an error loading the page.\r\n\r\nDetails:\r\n{0}", ex.Message),
            JsonRequestBehavior.AllowGet);
    }
}

Когда я наведите курсор мыши на DocumentPage.Html и попросите отобразить его как HTML, он выглядит великолепно. Текст Рендер имеет <span>?</span>тем не мение. Не уверен, что это только потому, что в Text Render нет шрифта или есть другая проблема.

На клиентской стороне я сохраняю HTML-текст в хранилище сессий до тех пор, пока страница не будет запрошена, а затем отобразлю его в div таким образом.

 var externalHtml = sessionStorage.getItem(currentPage);
 $('.viewer').text('');
 $('.viewer').append(externalHtml);

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

1 ответ

JsonResult не был должным образом закодирован. Я изменился ContentEncoding = Encoding.Default в ContentEncoding = Encoding.UTF8, После этого он оказал отлично. Вздох... Работаю над этим 2,5 дня.

Другие вопросы по тегам