最終更新日 2025-07-22
秀丸変換モジュール版 NormToStandardChar
(文字の揺れを修正し、通常利用される文字へと正規化する)
概要
Unicode上で「ぱっと見は同一文字」に見えても、「実際には違う文字」となってしまっていることがあります。
「文字の揺れ」を妥当な形で修正し、正規化する「秀丸変換モジュール」です。
あくまでも「文字の揺れ」を直すものであり、「ですます調」などの「文章の揺れ」を直すものではありません。
ダウンロード
更新日 2025/03/22
動作環境
-
秀丸
秀丸エディタ ver8.00以上
-
.NET Framework 4.8以上
Windows 11なら最初から入っています。
Windows 10でも余程敬遠していない限りは入っています。 -
Microsoft VC++ 再頒布可能パッケージ
Visual Studio 2022 C++ ランタイム
x86版とx64版両方インストールしてください。
インストール
秀丸・変換モジュールの登録 などを参考にして使えるようにしてください。
- NormToStandardChar.hmf は 秀丸エディタ 32bit系用です。
- NormToStandardChar.hmf64 は 秀丸エディタ 64bit系用です。
使い方
メニューからの使い方
対象の文章を秀丸でがばっと選択状態にし、秀丸の「編集」「変換」で、「標準的な文字への正規化」
マクロからの使い方 (HormToStandardChar.hmf を 秀丸エディタ本体と同じディレクトリに配置した場合)
selectall; filter "NormToStandardChar.hmf", "NormToStandardChar"; // 64bit版の場合は、 // filter "NormToStandardChar.hmf64", "NormToStandardChar";
マクロからの使い方② (マクロファイルと(HormToStandardChar.hmfを同じディレクトリに配置した場合)
selectall; filter currentmacrofilename + "\\NormToStandardChar.hmf", "NormToStandardChar"; // 64bit版の場合は、 // filter currentmacrofilename + "\\NormToStandardChar.hmf64", "NormToStandardChar";
具体的な挙動
NFCやNFKCで一括変換といった単純なものではなく、以下のように調整しています。
- 1文字ずつ走査します。
ここでいう「1文字」とは、サロゲートペアなど「複数の文字で1つの文字」を形成している場合、その「複数の文字全体」を1文字として取り扱います。 - 文字がsjisの文字に収まっている場合、それをそのまま採用します。
- 文字がsjisの文字に収まっていない場合、「NFC」でUnicode正規化を試みます。
この変換の結果、「何らかの文字変換が行われた」場合、それを採用します。 - 上では文字の変化が起きなかった場合、該当文字を「NFKC」でUnicode正規化を試みます。 この変換の結果、「元の文字とバイト数が同じか、それ以下の場合のみ」それを採用します。
以上の形で「文字の揺れ」を解消しています。
Visual Studio Code で同じ機能
NormToStandardJapanChar にて、同じ作者である私が提供しています。
(但し、秀丸で提供しているものは、C#かつ並列スレッドで処理しているため、秀丸で提供してるものの方が10~200倍ほど高速です)
ライセンス
-
NormToStandardChar
NormToStandardChar は MIT ライセンスとなります。
ソースの場所
- Githubにソースがあります。
- Githubにソースがあります。