Ubuntu VM运行时的本机名称编码为latin1,这可能会导致Elixir出现预期的utf8故障
如何解决每次执行Elixir代码或输入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
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