更新日:2022/03/13
このページではWindows11環境においてPowershellによりテキストファイルの文字コードを判定するサンプルプログラムを紹介します。
2022年3月現在ではPowershell では文字コードを判定する機能、APIは見つかりませんでした。
よって今回はフリーツールである nkf を利用して判定します。このツールはコマンドラインツールで、--guess オプションを使用するとテキストファイルの文字コード、及び括弧内で使用されている改行コードを返します。
今回はこのnkf が C:\tools\nkf\nkf32.exe' に保存された環境としてサンプルを紹介します。
次のサンプルは c:\temp\test.txt の文字コードを nkf32.exe を利用して判定しています。$ret に nkf32.exe の結果を代入しています。write-hostにより直接出力しています。その後 if 文により判定するサンプルも追加しています。
括弧内は開いたテキストファイルで使用されている文字コードです。本当に文字コードのみが必要なら別途括弧内を削除する機能が必要です。
Powershellで外部コマンドを実行する際にコマンドにスペースが入る場合はコマンドの先頭に&(アンバサント)を付ける必要があります。コマンドとオプションの間のスペースも対象なので、サンプルではコマンドの先頭に & を付けています。
サンプルコード:
#nkf ツールを使って文字コードを判別
$ret = &'C:\tools\nkf\nkf32.exe' --guess C:\temp\test.txt
write-host このファイルの文字コードは${ret} です
#UTF-8
if ($ret -eq "UTF-8 (CRLF)" )
{
write-host "UTF-8"
}
#Shift-JIS
if ($ret -eq "Shift_JIS (CRLF)" )
{
write-host "Shift-JIS"
}
#EUC
if ($ret -eq "EUC-JP (LF)" )
{
write-host "EUC-JP"
}
実行結果:
このファイルの文字コードはShift_JIS (CRLF) です
Shift-JIS
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018