Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker(Python、Java、Ruby等)中使用Ubuntu容器(ascii、utf-8)运行应用程序时出现编码问题_Java_Python_Ruby_Docker_Locale - Fatal编程技术网

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

在docker(Python、Java、Ruby等)中使用Ubuntu容器(ascii、utf-8)运行应用程序时出现编码问题,java,python,ruby,docker,locale,Java,Python,Ruby,Docker,Locale,在我自己的PC上,应用程序运行良好,但当它部署到docker中时,由于无效字符而失败 我使用的是ubuntu:lastest容器和python3,java和ruby,您需要正确设置区域设置 这是最小的正确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映像不指定区域设置。如果您

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


我使用的是
ubuntu:lastest
容器和
python3
java
ruby
,您需要正确设置区域设置

这是最小的正确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
资料来源:


我尝试了上述解决方案,发现我的docker中没有locale gen命令

因此,在RUN命令上方添加这一行或将其添加到中

RUN apt-get update && apt-get install -y locales && locale-gen en_US.UTF-8
现在这将起作用

第二个ENV LC_ALL en_US.UTF-8足以设置大部分变量,但它留下了两个空变量,所以我们需要全部3个来设置

FROM centos:7 

ENV LANG=en_US.UTF-8

在docker文件中添加上述一行对我很有用

在某些情况下运行
locale gen
并设置
LC\u ALL
就足够了。1。您可以省略“:latest”,因为它是2。ubuntu容器缺少包含
locale gen
命令的locales包,因此第二行应该是:
RUN apt update&&apt-y install locales