Я преобразовал изображения, которые вы загрузили в свой вопрос, обратно в BMP и исследовал их источник. Везде, где в исходном источнике присутствует символ, отличный от ISO-8859-1, в искаженном источнике появляется ?
.
Это означает, что у вас есть сервлет на /images/*
, который использует response.getWriter()
для записи изображения, используя кодировку платформы по умолчанию. Ты не должен этого делать. Файлы BMP не являются текстовыми файлами. BMP-файлы - это двоичные файлы. Вы должны использовать response.getOutputStream()
для записи двоичных данных. Вы можете найти основной и правильный пример сервлета изображения в этой статье .