最終更新日 2024-06-21

外部ファイルの文字コードの自動判定(秀丸アルゴ)

秀丸の設定に則った外部ファイルのエンコード判定 (秀丸エディタ 8.90以降)

秀丸が対象の外部テキストを「これから」初めて「あなたの秀丸エディタ」で読み込んだと仮定すると、
秀丸は、対象のファイルをどのエンコードと判断するだろうか、その結果を取得する関数です。

ポイントは「初めて」と「あなたの秀丸エディタ」の設定で読み込んだ場合、ということになります。
どのPCでも同じとなる汎用的な結果が返ってくる機能ではありません。

設定は、秀丸より「その他」⇒「動作環境」⇒「ファイル」⇒「エンコード1」で主に設定されています。
この優先順位にしたがって判定され、また、チェックが付いていないエンコード値は、この関数では「取り扱わないもの」とされます。
PICTURE

このように、あくまでも「あなたの秀丸エディタの設定」と一致したエンコード情報が欲しい場合に、このメソッドを利用します。

秀丸でファイルのエンコードを取得する(秀丸に設定されている内容に従う)

hm.File.GetEncoding( String filepath )

この返り値のオブジェクトには「MsCodePage」と「HmEncode」と「JsEncodingName」がプロパティとして存在します。
HmEncodeには、秀丸マクロの「encode」の解説書 の「encode」の項目に対応する値が格納されています(※)。
MsCodePageには、秀丸の独自のencode値を、Windows上での「コードページ」の番号へと置き換えたものです。

JsEncodingNameには、「utf-8」や「ms932」といったエンコード名が格納されています。

対象のパスにファイルを置いたり、ファイル名を変更したり、ファイルのエンコードを変更するなどして、
いろいろと挙動を確認してみましょう。

特に、「その他」⇒「動作環境」⇒「ファイル」⇒「エンコード1」 で判定対象となっていないエンコードの場合に、
強引にどれかに秀丸が当てはめようとしてしまうため、判定ミスが発生します。

よって、この関数が使えるには、「対象のディレクトリには、自分自身が使っている秀丸なら一発でエンコードが正しく判断可能」でありという
「そういったファイル群に対してのみ自動で振り分けて処理をする」といった限られたシーンで利用することとなるでしょう。

秀丸の設定に則って外部ファイルを読み込む (秀丸エディタ 8.90以降)

秀丸でファイルのエンコードを判断し(この時、秀丸に設定されている内容に依存する)、
その判断結果に基づいて、ファイルのテキスト内容を取得することが出来ます。

読み込み関数

マクロ中でもマクロ中以外でも、常時取得することが出来ます。

返り値オブジェクト Hm.File.Open( String filepath, [int hm_encode] )