SnowStack.EncodingProbe 1.1.0

dotnet add package SnowStack.EncodingProbe --version 1.1.0
                    
NuGet\Install-Package SnowStack.EncodingProbe -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SnowStack.EncodingProbe" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SnowStack.EncodingProbe" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="SnowStack.EncodingProbe" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SnowStack.EncodingProbe --version 1.1.0
                    
#r "nuget: SnowStack.EncodingProbe, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SnowStack.EncodingProbe@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SnowStack.EncodingProbe&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=SnowStack.EncodingProbe&version=1.1.0
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 / 改行コード判定に対応。