web-dev-qa-db-ja.com

VMはlatin1のネイティブ名エンコーディングで実行されているため、utf8を想定しているためElixirが誤動作する可能性があります

Elixirコードを実行するかiexを入力するたびにプロンプ​​トが表示されるこの警告を解決するにはどうすればよいですか?

警告:VMは、latin1のネイティブ名エンコーディングで実行されているため、utf8を想定しているため、Elixirが誤動作する可能性があります。ロケールがUTF-8に設定されていることを確認してください(「シェル」のロケール)

$ 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
22

どうやら設定解除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

エラーはなくなりました。

15

私は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
7
nicooga

CentOS 7では、以下がうまくいきました:

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

すべてではないにしても、ほとんどのRHELディストリビューションで機能するはずです。乾杯!

4
radtek

これは、MacラップトップからLinuxサーバー(ラップトップで実行されている仮想Linuxサーバーを含む)にSSH接続すると発生します。 SSHはLANGおよびLC_*環境変数をローカルシェルからリモートシェルに転送し、Macで使用されている値の一部はLinuxサーバーでは無効です。

この問題は、不足しているロケールをサーバーにインストールするなど、さまざまな方法で修正できます。サーバー(/etc/ssh/sshd_configAcceptEnvを削除する)またはラップトップ(/etc/ssh/ssh_configSendEnvを削除する)で、SSH環境の転送を無効にすることをお勧めします。

詳しくは Perlからのロケール設定の警告を修正するには?

3

Dockerイメージを使用しているときにこれが発生しました。次の行をDockerfileに追加すると、これが解決します:

ENV LANG=C.UTF-8
1
vee

私の場合、initスクリプトでロケールを設定します/etc/init/my_start_script.confトリックした

env LC_ALL=en_US.UTF-8 
export LC_ALL
0
Informatom