使用 Ubuntu 容器(ascii、utf-8)在 docker(Python、Java、Ruby 等)中运行应用时的编码问题

2022-09-01 18:31:12

在我自己的PC上,应用程序运行良好,但是当它被部署到docker中时,由于无效字符而失败。

我正在使用容器 和 、 和 。ubuntu:latestpython3javaruby


答案 1

您需要正确设置区域设置

这是最小的正确 Dockerfile:

FROM ubuntu:latest

RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

通常的 docker 映像不指定区域设置。如果你猛烈抨击它并执行它,你会看到它:locale

sudo docker exec -i -t yowsup3 bash

来源:


答案 2

我尝试了上述解决方案,发现locale-gen命令在我的docker中不可用。

因此,在 RUN 命令上方添加此行或添加它。

RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8

这现在将工作。

和第二个ENV LC_ALL en_US。UTF-8 足以设置大部分变量,但它留下了两个空的变量,所以这就是为什么我们需要所有 3 个变量来设置。


推荐