Ubuntu VM运行时的本机名称编码为latin1,这可能会导致Elixir出现预期的utf8故障

Ubuntu VM运行时的本机名称编码为latin1,这可能会导致Elixir出现预期的utf8故障,ubuntu,encoding,utf-8,virtual-machine,elixir,Ubuntu,Encoding,Utf 8,Virtual Machine,Elixir,如何解决每次执行Elixir代码或输入iex时提示的此警告 警告:虚拟机正在以拉丁1的本机名称编码运行,这可能会导致Elixir出现故障,因为它需要utf8。请确保您的语言环境设置为UTF-8(可以通过在shell中运行“语言环境”进行验证) 显然,问题出在未设置的LC\u ALL=,我检查了一下 $ cat /etc/default/locale LANG="en_US.utf8" LANGUAGE="en_US:" 确保缺少LC\u ALL,为了修复它,我执行了: $ sudo updat

如何解决每次执行Elixir代码或输入
iex
时提示的此警告

警告:虚拟机正在以拉丁1的本机名称编码运行,这可能会导致Elixir出现故障,因为它需要utf8。请确保您的语言环境设置为UTF-8(可以通过在shell中运行“语言环境”进行验证)


显然,问题出在未设置的
LC\u ALL=
,我检查了一下

$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
确保缺少
LC\u ALL
,为了修复它,我执行了:

$ sudo update-locale LC_ALL=en_US.UTF-8
此命令将
LC\u ALL
添加到
/etc/default/locale
文件中:

$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"
LC_ALL=en_US.UTF-8

错误消失了。

对我来说,在我的init脚本
/etc/init/my_start_script.conf中设置区域设置就成功了

env LC_ALL=en_US.UTF-8 
export LC_ALL

我在docker容器中使用erlang,其他解决方案没有解决这个问题。命令
updatelocale
在docker ubuntu容器中可能不可用,所以我偷了一些安装它的代码


当您从Mac笔记本电脑SSH到Linux服务器(包括在笔记本电脑上运行的虚拟Linux服务器)时,就会发生这种情况。SSH将
LANG
LC.*
环境变量从本地shell转发到远程shell,并且Mac上使用的一些值在Linux服务器上无效

这个问题可以通过多种方式修复,包括在服务器上安装缺少的区域设置。我建议只在服务器上(在
/etc/SSH/sshd\u config
中删除
AcceptEnv
)或笔记本电脑上(在
/etc/SSH/SSH\u config
中删除
SendEnv
)禁用SSH环境转发


在centOS 7上的

中阅读更多信息以下内容对我很有用:

localedef -c -f UTF-8 -i en_US en_US.UTF-8
export LC_ALL=en_US.UTF-8

应该适用于大多数RHEL分布(如果不是所有的话)。干杯

我在使用docker映像时遇到了这个问题。将以下行添加到我的
Dockerfile
解决了此问题:

ENV LANG=C.UTF-8

在Ubuntu 18.04.5上,LTS做到了

有趣的是:在Ubuntu 14.04上,它对我很有效,但我必须注销并重新登录。完成上述操作后重新连接cli如果你不是root用户,只需在前面添加一个sudo即可。这对我有用,谢谢。
localedef -c -f UTF-8 -i en_US en_US.UTF-8
export LC_ALL=en_US.UTF-8
ENV LANG=C.UTF-8
sudo dpkg-reconfigure locales