我正在 Docker 容器中运行 Java 程序(从 Docker Compose 开始),它抛出了一堆由 UTF-8 字符引起的错误(因为它们无法映射到 ASCII 字符集)。 有没有办法从 docker-compose 文件启用 UTF-8 编码?
您可以使用以下命令检查设置java参数,然后尝试运行您的java程序 -
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
如果使用上述命令可以正常工作,请在 docker 镜像构建过程中使用
ENV
命令进行设置。
如果您需要在 bash_profile 中设置它,请参阅 Dockerfile 的以下部分 -
RUN echo "JAVA_HOME=/opt/jdk1.8.0_65" >> ~/.bash_profile
在
Dockerfile
中添加这些行:
RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
RUN echo "LANG=en_US.UTF-8" > /etc/locale.conf
RUN locale-gen en_US.UTF-8
如果Container输出非ASCII字符为乱码,只需添加
ENV LANG="C.UTF-8" \
LC_ALL="C.UTF-8"