Thymeleaf bad rendering charachters in html

Hi
I’m using the new feature of Shinyproxy “template-path” to customize the homepage of shinyproxy.
My page contains some characters accentuation like “é, à, è”, but shinyproxy renders them to ��.

HTML code example :

Preview with Shinyproxy :
image

The file encoding is UTF-8 :
image

Is there any way to configure the resolver to use utf-8, from the application.yml ?

resolver.setCharacterEncoding("UTF-8");

I found that “proxy.template-path” is used in the container-proxy application, here :

Thank you for your help

ada

1 Like

Hi

Unfortunately, I cannot reproduce the problem. I tried with a few (special) UTF-8 characters and everything is working fine here. I tried with both firefox and chrome.

Can you send the exact template file you are using (as text)?

Hi @tdekoninck,
Thank you for your response !
Which shinyproxy version did you used ? I tried with 2.6.1 and 3.0.0 and both not working, with accentuated charachters.
Did you build shinyproxy JAR with html inside or used the proxy.template-path param ?

Here the html code :

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
        <head lang="en">
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        </head>
        <body>
                <p> Héloà</p>
                <p>Hello</p>
        </body>
</html>

Regards
Ada

1 Like

I have the same problem (e.g. Sören turns into S��ren).

UPDATE:
The problem only concerns the contents in the website frame for the running apps (so the display of the apps is somewhat broken). It does not concern the header of the Shiny proxy wrapper (black header on top): When I add special characters to the header, they are displayed perfectly. Also the app overview of ShinyProxy can display those characters perfectly.

I am running ShinyProxy 3.0.1, Oracle Linux Server release 8.7, Docker version 23.0.6.

When I create my app images and start them stand-alone (individually) with “docker run”, I can test them and they look beautiful and perfect in the browser.
So the issue must have something to do with ShinyProxy.

Also, I can say that the issue first appeared when I switched from ShinyProxy 2.6.1 to ShinyProxy 3.0.1.
I am not using any templates within my folder from which I build my ShinyProxy image.

Can you reproduce?

Dockerfile:

FROM ibmjava:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-3.0.1.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]

UPDATE:
I deleted my comments on the templates as it seems this cannot be the root cause. This error seems to have nothing to do with custom templates at all.

Hi @attached

Thank you for the additional information, unfortunately I was not able to reproduce the problem. I tried with both a Shiny app and a flask app, but the characters are correctly shown.

Could you share a minimal app that causes the issue? This would allow me to reproduce the problem and fix it.

With your help, I was able to reproduce the problem with the following repo and steps (please take a look at the README and the screenshots):

Thank you for the repository, I was able to reproduce the problem. I can only reproduce the problem when using the ibmjava:8-jre base image. I tried several other base images and none of these cause any issue with UTF8:

eclipse-temurin:11
adoptopenjdk/openjdk11-openj9:jdk-11.0.11_9_openj9-0.26.0-debian-slim
ibm-semeru-runtimes:open-11.0.19_7-jre-jammy
amazoncorretto:11
openjdk:11-jre-slim-buster

Can you try using one of these JDKs?

1 Like

That solved the issue. I selected eclipse-temurin:11 specifically. Thank you; yet strange that IBM seems to do things that “differently”.

1 Like

FYI - this is also present in ubuntu 22.04 using default-jre - ie:

openjdk 11.0.19 2023-04-18
openJDK Runtime Environment (build 11.0.19+7-post-Ubuntu-0ubuntu122.04.1)
OpenJDK 64-Bit Server VM (build 11.0.19+7-post-Ubuntu-0ubuntu122.04.1, mixed mode, sharing)

I ended up installing jre 19 and ensuring 19 is selected.

sudo apt install openjdk-19-jre
sudo update-alternatives --config java

The problem with this is that openjdk 19 is already EoL (Oracle JDK | endoflife.date) as far as I understand it and release 17 and 8 which are LTS have the same problem.

Is this something that was introduced with SP 3.0.1 or was it there prior as well? ie running v3.0.0 on java 17 or 8?

Edit: reading some other posts, just for clarity no template-path is defined. So it is using whatever is already integrated 3.0.1.

Hi all, since it seems this is not limited to the IBM JDK, I tested a bit more and I was able to fix this.
Could you please test the following development version and let us know whether it fixes the issue for you? We will be releasing a final version very soon.

Docker image: openanalytics/shinyproxy-snapshot:3.0.2-SNAPSHOT-20230711.134736
JAR: https://nexus.openanalytics.eu/repository/snapshots/eu/openanalytics/shinyproxy/3.0.2-SNAPSHOT/shinyproxy-3.0.2-20230711.134736-12-exec.jar

Thanks!

@tdekoninck can confirm it is fixed for the JAR version on openjdk 11 (ie default for Ubuntu 22.04).

Thanks for the support!