【PowerShell】ファイルの文字コード取得

ファイルの文字コードを調べる方法。

ファイルの取得

最初は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)

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください