端末のcsvファイルに外国名を持つファイルのリストを書き込むには?

端末のcsvファイルに外国名を持つファイルのリストを書き込むには?

ターミナルフォルダに外国語の名前を持つファイルがいくつかあります。端末で ""すると、ls下の画像の右側にリストが表示されます。

ここに画像の説明を入力してください。

こうやったところ、ls -t | tail -n +2以下のように実際のキャラクターが見えました。

ここに画像の説明を入力してください。

2枚目の写真のオリジナルキャラクターファイル名のリストをcsvファイルとして書きたいですか?これを行う方法はありますか?ここで非常によく似た質問を見つけましたが、この質問のファイル名は外国語ではありませんでした。使うとこんな感じです。ls -t | tail -n +2 > files.csv

ここに画像の説明を入力してください。

ただし、元の名前に基づいて既存のファイルからメタ情報を取得する必要があるため、元の名前を含むリストが必要です。ここで、ファイル名は順序がなく、ファイル数が異なります。

MobaXtermからターミナル設定に移動すると、文字セットはUTF-8(エンコード)として選択されます。また、UTF-8が見えることを確認しました。

~$ locale -a
C
C.UTF-8
POSIX

答え1

このファイル名はUTF-8でエンコードされているようです。端末はUTF-8ですが、ロケールはそうではありません。 (ASCIIとも呼ばれます)のようなものをlocale charmap出力できます。ANSI_X3.4-1968ASCII は、コードポイントが 127 より高い文字を定義しません。非ASCII UTF-8文字はすべて2バイト以上でエンコードされ、すべて127より大きいです。

ls?これらのバイトは、ASCII(現在のロケール文字マップ)で印刷可能な文字を形成しないため、次のようにレンダリングされます。

文字がUTF-8にマップされるロケールを使用する必要があります。あなたのリストに書くことができる報告によると、locale -a.localesだけが残っていますC.UTF-8

ランニング:

export LANG=C.UTF-8
locale

$LC_XXX一部の変数が別のものに設定されている場合は、設定を解除する必要があります。

Microsoft 製品は、文字で始まらない限り、UTF-8 ファイル自体を認識できない場合がありますZERO WIDTH NO-BREAK SPACE (UTF-16 ではバイト順表示としても使用され、UTF-8 ではバイト順序に問題はありません).

この文字を追加して行末をMicrosoft形式に変換できます。

unix2dos -m < file.csv > file.ms.csv

関連情報