SnowStack.EncodingProbe
1.1.0
dotnet add package SnowStack.EncodingProbe --version 1.1.0
NuGet\Install-Package SnowStack.EncodingProbe -Version 1.1.0
<PackageReference Include="SnowStack.EncodingProbe" Version="1.1.0" />
<PackageVersion Include="SnowStack.EncodingProbe" Version="1.1.0" />
<PackageReference Include="SnowStack.EncodingProbe" />
paket add SnowStack.EncodingProbe --version 1.1.0
#r "nuget: SnowStack.EncodingProbe, 1.1.0"
#:package SnowStack.EncodingProbe@1.1.0
#addin nuget:?package=SnowStack.EncodingProbe&version=1.1.0
#tool nuget:?package=SnowStack.EncodingProbe&version=1.1.0
SnowStack.EncodingProbe
このソリューションには以下の二つのプロジェクトが含まれています。
SnowStack.EncodingProbe : NuGetパッケージ
SnowStack.EncodingProbe.PowerShell : PowerShellコマンドレット
SnowStack.EncodingProbe パッケージは、文字エンコーディングの推測を行うクラスライブラリです。
SnowStack.EncodingProbe.PowerShellコマンドレットは、Resolve-Encoding というPowerShellコマンドを格納しています。Resolve-Encoding は EncodingProbeパッケージを使用して、文字エンコーディングの推測を行うコマンドです。
実行環境情報は、Get-EncodingProbePlatformInfo コマンドによって取得できます。
EncodingProbe の主な機能は以下の様になります。
文字エンコーディングの推測
BOMの有無の確認
改行コードの種類の確認
コマンドが認識しているカルチャー情報の表示
実行環境情報(OS種別 / .NETランタイム / ロケール / PowerShellホスト)の取得
SnowStack.EncodingProbe パッケージは、内部で UTF.Unknown を使用しています。
EncodingProbe の独自文字エンコーディング推測処理で、英語・日本語・韓国語・繁体字中国語・簡体字中国語の推測を行い、それらの推測でわからなかった場合は、 UTF.Unknown に文字エンコーディング推測を任せます。
UTF.Unknown は欧米などのシングルバイト文字エンコーディングの推測には優れていますが、東アジア漢字文化圏の旧マルチバイト文字エンコーディングの推測では、やや推測信頼性に劣る欠点があり、東アジア漢字文化圏の文字エンコーディングの推測処理だけを、EncodingProbe の独自文字エンコーディング推測処理で補っています。
両者の文字エンコーディングの推測処理を組み合わせることにより、世界中の文字エンコーディングの推測処理ょを可能にしています。
version 1.1.0 で追加したコマンド(PowerShell モジュール)
PowerShell モジュールに、テキストファイルの読み書きコマンドを追加しました。既存のコマンドと公開 API に変更はありません。
| コマンド | 役割 |
|---|---|
Get-ProbedContent |
文字エンコーディングを判定してテキストファイルを読み込む |
Set-ProbedContent |
文字エンコーディング・BOM・改行コードを明示して書き込む |
Add-ProbedContent |
文字エンコーディングを保ったまま追記する |
ConvertTo-DotNetEncoding |
各種の指定を System.Text.Encoding に変換する |
これらの -Encoding は、PowerShell 5.1 と 7.x で共通の名前(統一語彙)を受け付けます。同じ名前が同じ結果になるため、PowerShell 5.1 でも BOM 無しの UTF-8 や Shift_JIS を名前で指定できます。どちらも 5.1 の標準コマンドではできないことです。
# 判定して読み込む(BOM は常に読み飛ばす)
Get-ProbedContent .\shift-jis.txt
# BOM 無しの UTF-8 で書き込む。PowerShell 5.1 でも同じ結果になる
Set-ProbedContent .\out.txt -Value $lines -Encoding utf8NoBOM
# 元のファイルの文字エンコーディング・BOM・改行コードを保ったまま書き戻す
$text = Get-ProbedContent .\a.txt -Raw
$text -replace 'foo', 'bar' | Set-ProbedContent .\a.txt -EncodingFrom .\a.txt -NoNewline
# 文字エンコーディングを保ったまま追記する
Add-ProbedContent .\log.txt -Value $line
# 日本語環境から韓国語のファイルを読む(カルチャーを指定しないと EUC-JP と誤判定される)
Get-ProbedContent .\korean.txt -Culture ko-KR
# 欧米のテキストは UTF.Unknown の判定に任せる
Get-ProbedContent .\german.txt -Strategy UtfUnknownOnly
-Encoding には、統一語彙名のほかに WebName(shift_jis など)、数値コードページ(932 など)、System.Text.Encoding インスタンス、Resolve-Encoding の戻り値をそのまま渡せます。
使ううえで知っておく必要のある点がいくつかあります。
- 書き込みでは、BOM 方針の定まらない裸の
utf8を受け付けません。utf8NoBOMまたはutf8BOMを指定してください Add-ProbedContentでは BOM の指定が常に無視されます。また、追記できるかどうかは実際に書き出されるバイト列で判定します-Encodingの入力形式によって改行コードの決まり方が変わります
Get-ProbedContent / Set-ProbedContent / Add-ProbedContent は、Resolve-Encoding と同じ -Culture と -Strategy を受け取ります。バイト列だけでは区別できない組み合わせ(EUC-KR と CP949、EUC-JP と Shift-JIS など)はカルチャーで曖昧解消するため、日本語環境で韓国語や中国語のファイルを扱うときは -Culture に対象言語のカルチャーを指定してください。-EncodingFrom の参照ファイルや、-Encoding を省略したときの継承にも効きます。
いずれも各コマンドの Get-Help <コマンド名> -Full に記載しています。ヘルプは英語・日本語・韓国語・繁体字中国語・簡体字中国語の 5 言語を同梱しています。詳細は CHANGELOG.md を参照してください。
2026年7月14日に正式版 1.0.0 をリリースしました。
NuGet.org より SnowStack.EncodingProbe を公開しました。
以下の記事で使い方の解説を行っています。
SnowStack.EncodingProbe NuGet Package 解説
また、PowerShell コマンドレットの解説は同ブログの以下の記事で解説しています。
SnowStack.EncodingProbe.PowerShell 解説
解説記事は、現時点では、やや説明不足ですが、後日詳細な解説記事を書く予定です。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- UTF.Unknown (>= 2.6.0)
-
net10.0
- UTF.Unknown (>= 2.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 90 | 9/1/2026 |
| 1.0.2 | 98 | 8/10/2026 |
| 1.0.1 | 107 | 8/10/2026 |
| 1.0.0 | 158 | 7/14/2026 |
| 1.0.0-preview.6 | 67 | 7/11/2026 |
| 1.0.0-preview.5 | 69 | 7/8/2026 |
| 1.0.0-preview.4 | 67 | 7/2/2026 |
| 1.0.0-preview.3 | 79 | 6/23/2026 |
| 1.0.0-preview.2 | 70 | 6/19/2026 |
| 1.0.0-preview.1 | 67 | 6/7/2026 |
初回リリース。文字エンコーディング推測 / BOM / 改行コード判定に対応。