これはテキストファイルをドロップするとその内容がRichTextBoxに表示されるサンプルプログラムです。

これだと文字コードがSHIFT-JISの場合はうまく読み込めますが、UTF-8だと文字化けしてしまいます。

StreamReaderのコンストラクタで文字エンコーディングを設定すればいいのですが、ドロップされたテキストファイルがどうなっているのかはそのときにならないとわかりません。テキストファイルの文字コードを知る方法はないのでしょうか?

ここではnkf(Network Kanji Filter)を使った方法を紹介します。

まずnkf.exe nkf32.dll Windows 用を入手します。

ネットワーク用漢字コード変換フィルタ シフトJIS,EUC-JP,ISO-2022-JP,UTF-8,UTF-16

実行ファイルと同じフォルダにnkf32.dllをコピーしておきます。

そして

これでテキストファイルのパスから文字コードを取得することができます。ただし対応しているのは

Shift_JIS
EUC-JP
ISO-2022-JP
UTF-8
UTF-16LE
UTF-16BE

だけです。これだけあれば十分かと・・・。

あとはファイルがドロップされたときに、

これで文字化けしないでファイルを開くことができるようになります。