[FAQ CENTER トップ]
[Powershell FAQ トップへ]



【Powershell】テキストファイルの文字コードが Shift-JIS か UTF-8 を判定する



更新日:2022/03/13

このページではWindows11環境においてPowershellによりテキストファイルの文字コードを判定するサンプルプログラムを紹介します。
2022年3月現在ではPowershell では文字コードを判定する機能、APIは見つかりませんでした。

よって今回はフリーツールである nkf を利用して判定します。このツールはコマンドラインツールで、--guess オプションを使用するとテキストファイルの文字コード、及び括弧内で使用されている改行コードを返します。
今回はこのnkf が C:\tools\nkf\nkf32.exe' に保存された環境としてサンプルを紹介します。



サンプルコード集

以下は Windows 10 環境におけるサンプルコードと実行結果です。

次のサンプルは 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