当前位置: 首页>>技术教程>>正文


ubuntu – VM正在使用latin1的本机名称编码运行,这可能会导致Elixir出现故障,因为它期望使用utf8

, , , ,

问题描述

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

warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running “locale” in your shell)

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.utf8
LANGUAGE=en_US:
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04 LTS
Release:        14.04
Codename:       trusty

最佳办法

我检查了显然未设置LC_ALL=的问题

$ cat /etc/default/locale
LANG="en_US.utf8"
LANGUAGE="en_US:"

确保LC_ALL丢失,要修复它,我执行了:

$ sudo update-locale LC_ALL=en_US.UTF-8

该命令将LC_ALL添加到/etc/default/locale文件中:

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

错误消失了。

次佳办法

我在docker容器中使用了erlang,其他解决方案却没有将其削减。命令update-locale可能在docker ubuntu容器中不可用,因此我偷了一些代码从https://hub.docker.com/r/voidlock/erlang/~/dockerfile/安装它。

apt-get update && apt-get install -y --no-install-recommends locales
export LANG=en_US.UTF-8 \
    && echo $LANG UTF-8 > /etc/locale.gen \
    && locale-gen \
    && update-locale LANG=$LANG

第三种办法

在centOS 7上,以下对我有用:

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

应该适用于大多数(即使不是全部)RHEL发行版。干杯!

第四种办法

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

可以通过多种方式解决此问题,包括在服务器上安装缺少的语言环境。我建议只在服务器(在/etc/ssh/sshd_config中删除AcceptEnv)或在笔记本电脑(在/etc/ssh/ssh_config中删除SendEnv)上禁用SSH环境转发。

了解更多How to fix a locale setting warning from Perl?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9936.html,未经允许,请勿转载。