Как включить расширенные кодировки в Fabric8 Open Jdk Container? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть исключение UnmappableCharacterException в fabric8/java-alpine-openjdk11-jre:1.6.5 контейнере. Как я могу исправить это исключение?

java.nio.charset.UnmappableCharacterException: Input length = 1
    at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:275)
    at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)
    at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)
    at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)

Контекст приложения:

Мое приложение является приложением веб-API с Quarkus Framework, и в основном я использую кодировку UTF-8, но в какой-то момент я необходимо использовать другую кодировку, например MS932 (Windows-31j).

Когда я запускаю приложение на машине (не в контейнере, с ./gradlew quarkusDev), я могу получить ответ с помощью указанной кодировки c, но в контейнере у меня есть исключение, описанное выше.

Недавно я изменил структуру Jersey на Quarkus, а контейнер tomcat:8.5-jdk11-openjdk-slim на fabric8/java-alpine-openjdk11-jre:1.6.5 контейнер.

I ' Я уверен, что Джерси с tomcat:8.5-jdk11-openjdk-slim ответил без исключения, поэтому я попробую позже с изображением openjdk11-slim, но мне нравится контейнер fabric8, поэтому я хочу исправить эту проблему и продолжать использовать его.

Обнаружен Выводы:

Я пытался изменить эти спецификации c кодировки на UTF-8 или UTF-16, ответы в порядке, но не только MS932, также SJIS, GBK и другие Расширенный набор кодировок возвращает исключение.

В этом в контексте, я думаю, эти исключения связаны с Extended Encoding Set и изображением контейнера fabric8.

Environment Info и Dockerfile:

Вот часть моего Dockerfile (он основан на сгенерированном Quarkus Dockerfile) :

FROM fabric8/java-alpine-openjdk11-jre:1.6.5
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV AB_ENABLED=jmx_exporter

# Be prepared for running in OpenShift too
RUN adduser -G root --no-create-home --disabled-password 1001 \
  && chown -R 1001 /deployments \
  && chmod -R "g+rwX" /deployments \
  && chown -R 1001:root /deployments

COPY --from=build /home/gradle/project/build/lib/* /deployments/lib/
COPY --from=build /home/gradle/project/build/*-runner.jar /deployments/app.jar
EXPOSE 8080

# run with user 1001
USER 1001
  • ОС: Debian GNU / Linux 10
  • Docker версия: 18.09.1 ​​

Ссылки

1 Ответ

1 голос
/ 28 февраля 2020

Мы нашли решение для этого.

К сожалению, это не проблемы Quarkus, Fabric8 и Java, это всего лишь данные (символы).

Недавно данные были обновлены. Он содержит некоторые символы, которые MS932 или другие кодировки не могут отображаться, но UTF-8 может. Это делает проблему в результате.

Смущает, но проблема была решена.

...