ファイルの文字コードを調べる方法。
ファイルの取得
最初はPowerShellだけでできると思って公開したけど、無理ぽだった。
なのでDLLを追加して、それをPowerShellから実行する方法で。
参考
GitHub – hnx8/ReadJEnc: ReadJEnc C#(.NET)用ファイル文字コード種類自動判別ライブラリgithub.com
リリースページからファイルをダウンロードする。
Zipを解凍してDLLを適当なフォルダに配置。
バージョン毎にDLLが入ってると思いますが、適当なバージョンを使ってください。
インストールされている.NET Frameworkの確認は↓を参考に
https://qiita.com/asterisk9101/items/f13da78b4cb9ab6d3c4b
文字コード確認
# DLLを読み込み
[Reflection.Assembly]::LoadFile("C:\TEMP\Hnx8.ReadJEnc.dll")
$file=Get-Item "C:\TEMP\test.txt"
$reader=new-object Hnx8.ReadJEnc.FileReader($file )
$reader.Read($file)
実行結果
Name CodePage
---- --------
ASCII 0
文字コード確認 一括
# DLLを読み込み
[Reflection.Assembly]::LoadFile("C:\TEMP\Hnx8.ReadJEnc.dll")
$targetFolder = 'C:\TEMP\TEST\';
foreach($item in Get-ChildItem $targetFolder)
{ if($item.PSIsContainer) { # フォルダの場合の処理 } else { # ファイルの場合の処理 $file=Get-Item $item.FullName $reader=new-object Hnx8.ReadJEnc.FileReader($file) #$reader.Read($file) Write-Host ($file.Name + "`t`t" + $reader.Read($file).Name); }
}
実行結果
1.txt ShiftJIS
2.txt ASCII
3.txt UTF-8N
4.txt UTF-8
※UTF-8 ⇒ BOM付 UTF-8 っぽい
サブフォルダも
Get-ChildItem に -Recurse つければ行ける。
foreach($item in Get-ChildItem $targetFolder -Recurse)
以上です。