treeをリダイレクトすると文字化けした
tree
コマンドの結果をリダイレクトでファイルに保存すると、以下のような文字化けが発生します:
I:.
│ .flutter-plugins-dependencies
│ .fvmrc
上記のような正常な表示が、以下のように化けてしまいます:
I:.
��������.flutter-plugins-dependencies
��������.fvmrc
または
I:.
・ス・ス・ス・ス・ス・ス・ス・ス.flutter-plugins-dependencies
・ス・ス・ス・ス・ス・ス・ス・ス.fvmrc
原因
この問題は文字エンコーディングの違いによって発生します:
tree
コマンドの出力: Windowsの既定エンコーディング(CP932/Shift_JIS)- ファイル読み込み時: UTF-8として解釈される
この不一致により、罫線文字(│
, ├─
, └─
など)が正しく表示されません。
解決方法
方法1: PowerShellのOut-File
コマンドレットを使用(推奨)
tree /F | Out-File -FilePath filename.txt -Encoding UTF8
この方法により、最初からUTF-8エンコーディングでファイルが作成されます。
方法2: コマンドプロンプトでコードページを変更
chcp 65001
tree /F > filename.txt
chcp 65001
でUTF-8コードページに切り替えてから実行します。
方法3: 既存ファイルの変換
既に文字化けしたファイルがある場合:
Get-Content filename.txt -Encoding Default | Out-File filename_fixed.txt -Encoding UTF8
treeコマンドのオプション解説
/F
オプションの違い
tree
(/F
なし): ディレクトリ構造のみ表示tree /F
(/F
あり): ディレクトリ構造とファイル名の両方を表示
実行例
/F
なしの場合:
フォルダー パスの一覧: ボリューム HDCZ-UT
I:\PROJECT\FOLDER
├─subfolder1
├─subfolder2
└─subfolder3
/F
ありの場合:
フォルダー パスの一覧: ボリューム HDCZ-UT
I:\PROJECT\FOLDER
│ file1.txt
│ file2.txt
├─subfolder1
│ subfile1.txt
├─subfolder2
└─subfolder3
subfile2.txt
まとめ
Windowsのtree
コマンドで文字化けを防ぐには:
- PowerShellの
Out-File
コマンドレットを使用する - 明示的にUTF-8エンコーディングを指定する
- 単純なリダイレクト(
>
)は避ける
コメント
コメントを投稿