

ubuntu20.04 サーバに、MacOS BigSur から iterm2 を利用してssh接続しています。

この状態で、「一部のコマンドの出力のみ」文字化けする症状に悩んでいます。

具体的には ls コマンドなのですが、

[code]

    $ ls
    
     test  ''$'\343\203\206\343\202\271\343\203\210'
    
[/code]

不思議なことに、この出力を他のコマンドにパイプすると、文字化けは起こりません。

[code]

    $ ls | cat
    
    test
    テスト
    
[/code]

サーバは多国籍なチームが触りますので、`LANG=en_US.UTF-8` に設定してあります。  
しかし、下記のようにLANG変数を設定してからでも、挙動は変わりませんでした。

[code]

    $ LANG=ja_JP.UTF-8 ls
    
     test  ''$'\343\203\206\343\202\271\343\203\210'
    
[/code]

cat コマンドについては、日本語のファイルも正しく表示出来るのですが、

[code]

    $ cat README.md
    
    * 研究室内部開発用
    ...
    
[/code]

nano コマンドでは日本語が全ておかしな表示になります。

[code]

    $ nano README.md
    
        ^t                     ^f^e   ^c      ^v^k   ^y      ^t
    ...
    
[/code]

vi コマンドではまた化け方が異なり、一部の日本語文字が見える状態になります。

[code]

    $ vi README.md
    
    ~T究室�~F~E�~C��~V~K�~Y��~T�
    ...
    
[/code]

非常に珍しい症状で対応に悩んでいるのですが、  
これらの異なる表示となるコマンド群の設定を統一して、  
常に日本語が正しく表示される状態にする方法はありませんでしょうか？

ファイルの中身とファイル名は、全てUTF-8のみを使用しています。  
マシンは、LinuxとMacのみが存在する環境です。

# 追記

追加でいくつか検証を行いました

・MacOS 標準の terminal.app でも全く同じ症状  
iterm2 固有の症状では無いようです

・追加した exa コマンド等も文字化けしない  
OS標準の ls コマンドや nano と、exa や catは なにか異なる設定を読み込んでいる？

・locale コマンドの出力にエラーが出ている

[code]

    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.UTF-8
    LANGUAGE=
    LC_CTYPE=UTF-8
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    
[/code]


CC BY-SA 4.0
2021-09-01T12:48:42.190
81165
2021-09-02T02:31:30.410
2021-09-02T02:31:30.410
32676
32676
question
macos ubuntu zsh unicode
ubuntu 20.04 ターミナルで特定コマンドの出力のみ文字化けする


上記 `locale` コマンドのエラーメッセージで検索した所、こちらの記事が見つかりました  
<https://askubuntu.com/questions/599808/cannot-set-lc-ctype-to-default-locale-
no-such-file-or-directory>

添付画像のように、iterm2 の、ロケール変数の自動設定をオフにして  
iterm2を再起動した所、locale コマンドの結果からエラーが消え、  
`ls nano vi`
いずれも日本語が正しく表示される用になりました[![iterm2設定ダイアログ](https://i.stack.imgur.com/MZmD6.png)](https://i.stack.imgur.com/MZmD6.png)

[![画像の説明をここに入力](https://i.stack.imgur.com/O1Ptn.png)](https://i.stack.imgur.com/O1Ptn.png)


CC BY-SA 4.0
2021-09-02T02:23:49.070
82173
2021-09-02T02:23:49.070
32676
81165
answer