Отображение unicode в browserFrame

Коллеги, добрый день!

Возникла проблема с отображением html в кодировке unicode в browserFrame.

Для заполнения browserFrame применяем следующий подход:

try (ByteArrayInputStream inputStream = new ByteArrayInputStream(contents)) {
browserFrame.setSource(StreamResource.class)
.setStreamSupplier(() -> inputStream)
.setFileName(fileName);} catch (IOException e) { e.printStackTrace(); }

contents - это байтовый массив, в котором хранится html-документ, прочитанный из поля типа image в MS SQL Server.
Если html хранится в кодировке windows-1251 и содержит HTML-заголовок с соответствующим charset - всё отображается корректно.
Если мы пытаемся хранить html-документ в unicode и подавать в тот же байтовый массив - получаем такую картину:
1111

пример html:

<html><head><meta http-equiv='Content-Type' content='text/html; charset=unicode'>  &lt;P&gt; Более 22 тысяч взрывоопасных предметов обнаружено и уничтожено &lt;P/&gt;  &lt;P&gt;1пп др дм&lt;/P&gt; </html>

Порекомендуйте, как правильно подать наш html на вход browserFrame для корректного отображения.

Здравствуйте!

Указывать charset=unicode не совсем корректно, так как браузеры могут распознавать такую запись по разному. Попробуйте использовать utf-8.

Роман, добрый вечер!
utf-8 пробовали указывать - результат примерно тот же :frowning:

Попробуйте посмотреть в какой кодировке был сам файл, возможно он был не в utf-8.

Сам файл был в unicode (то есть utf-16). Мы пробовали ставить в header utf-16, это тоже не помогло…
Есть ли возможность подавать в browserFrame содержимое файла html (пример - в моем первом сообщении) и, если да, то как это сделать?

В BrowserFrame нет, но можно посмотреть HtmlBox (демо) и даже Label c htmlEnabled="true".

Например:

@Inject
private HtmlBoxLayout htmlBox;

@Inject
private Label<String> label;

@Subscribe
public void onInit(InitEvent event) throws IOException {
    InputStream is = BlankScreen.class.getResourceAsStream("test.html");

    byte[] content = ByteStreams.toByteArray(is);
    String value = new String(content);

    htmlBox.setTemplateContents(value);

    label.setHtmlEnabled(true);
    label.setValue(value);
}