Кириллица в jasper report
Есть код, отправляющий jasper отчет на почту
FORM notificationNewComment
OBJECTS c = Comment
PROPERTIES (c) ticketId, ticketSubject, text, employeeName
;
notifyEmployee(Comment c, Employee e) {
MESSAGE 'notify new comment: ' + name(e) LOG NOWAIT;
LOCAL bodyFile = FILE ();
PRINT notificationNewComment OBJECTS c = c HTML TO bodyFile;
EMAIL
SUBJECT 'TICKETID: [' + id(ticket(c)) + '] Новый комментарий к заявке'
TO address(defaultEmail(e))
BODY bodyFile()
NOWAIT
;
}
После переноса в production (находится в докере), перестала отображаться кириллица. Выглядит вот так:
Где-то в настройках нужно проставить кодировку?
Если сравнивать тело писем, то после переноса добавился шрифт в CSS
и ссылка на него
<link class=3D"jrWebFont" rel=3D"stylesheet" href=3D"lsf1652873724445115566=
8.html_files/DejaVu Sans_-en_US">
UPD1: Только что заметил, в письме все отображается верно. Просто все символы заменены на знак вопроса. Видимо где-то раньше.
Нормальное письмо:
<div style=3D"padding-left:2px;padding-right:2px;"><span style=3D"font-fami=
ly: DejaVu Sans; color: #FFFFFF; font-size: 20px; line-height: 1; *line-hei=
ght: normal; font-weight: bold;">=D0=90=D0=9A=D0=A0: =D0=97=D0=90=D0=AF=D0=
=92=D0=9A=D0=98</span></div></td>
Кривое письмо:
<div style=3D"padding-left:2px;padding-right:2px;"><span style=3D"font-fami=
ly: 'DejaVu Sans_-en_US', 'DejaVu Sans'; color: #FFFFFF; font-size: 20px; l=
ine-height: 1; *line-height: normal; font-weight: bold;">=EF=BF=BD=EF=BF=BD=
=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD: =EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=
=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD=EF=BF=BD</s=
pan></div></td>
UPD2:
OS: Ubuntu 22.04.3
DOCKER: Docker version 25.0.1, build 29cf629
JAVA: openjdk 11.0.8 2020-07-14
LSFUSION: 6.0-beta0 (292)
services:
server:
container_name: server
image: lsfusion/server:6.0-beta0
volumes:
- ./lsfusion:/lsfusion
networks:
- app
environment:
- LANG=ru_RU.UTF-8
- TZ=Europe/Moscow
- DB_PASSWORD=***
- DB_SERVER=***
- DB_USER=***
- DB_NAME=***
# - JAVA_OPTS=-Xmx4000m
restart: unless-stopped
client:
container_name: client
image: lsfusion/client:6.0-beta0
# ports:
# - 8080
depends_on:
- server
volumes:
- ./conf:/usr/local/tomcat/conf/Catalina
networks:
- nginx
- app
environment:
- LANG=ru_RU.UTF-8
- SERVER_HOST=server
# - SERVER_PORT=7652
# - JAVA_OPTS=-Xmx4000m
restart: unless-stopped
networks:
nginx:
external: true
app:
external: true
Ответы (1 шт):
Вероятнее всего, неправильно выставлена кодировка для виртуальной машины Java. На данный момент, lsFusion не полностью поддерживает все кодировки отличные от UTF-8.
Чтобы выставить кодировку UTF-8 для сервера приложений нужно добавить следующую строку в параметры запуска сервера :
-Dfile.encoding=UTF8
При использовании стандартного инсталлятора параметры запуска находятся в файле /etc/lsfusion6-server/conf/lsfusion.conf - строка FUSION_OPTS=.