秀丸マクロ保存時と文字コードNo.09381
天翔記.jp さん 17/03/17 02:48
 
いつもお世話になっております、天翔記.jpです。

■概要

 .macのファイルの拡張子が保存された際、utf8/utf16なら、
  「BOM」を付けてなければ警告をだしてはどうでしょう。


■経緯等

 秀丸マクロは現在、ファイルの文字コードとして、
 ・SJIS
 ・utf8(BOM必須)
 ・utf16(BOM必須)
 を受け付けるのですが、

 このうちutf系が、たちが悪いところがありまして、

 "BOMが付いていなくとも、なんとなくマクロが実行されて、
  あげく大抵バグるため、マクロがバグってるものと勘違いする"

 ということがあります。


 個人で対策をするなら、自動起動の「保存直前と直後」あたりで、
 拡張子や文字コードを見ながら、BOMを自動で付与すればいいのですが、
 いっそうのこと、秀丸側でセーフティーを張った方がよいと思います。


■対策案

 ユーザーがファイルを保存しようとした時、
 以下のような条件が整っていれば、
 警告ダイアログを出し、
 「はい」が選択されればBOMを付与する。

 ・.macという拡張子
 ・.macと結び付けられている「ファイルタイプ別の設定」は「秀丸マクロ」
 ・テキストファイル(かつテキストモード)
 ・文字コードがutf8もしくはutf16le
 ・BOMが無い

  以上の条件が整った時、
 「・・・(秀丸マクロとして正しく動作させるには云々の文言)
  BOMを付けますか? [はい][いいえ]」

 [はい]ならBOMを付与して、保存。


以上となります。ご検討ください。

[ ]
RE:09381 秀丸マクロ保存時と文字コードNo.09382
秀丸担当 さん 17/03/17 10:00
 

確かにマクロでUTF-8を扱う場合はBOMが無くエラーになりやすいと思います。
UTF-16は基本的にBOMが付くので問題にはなりにくいと思います。
そういう対策もあったらいいので、ご意見参考にさせていただきます。

エラーになって混乱しやすいのは、UTF-8の文字列をShift-JISと解釈して、
Shift-JISとして見た場合の第2バイトのところに「"」がくると、「"」を見逃
して、そのあとずっとずれるというケースだと思います。
そこで、Shift-JISの第2バイトがおかしいというエラーとして最初に検出すれ
ば、かなり問題は低減されると思うので、そういう対策も検討します。

[ ]
RE:09382 秀丸マクロ保存時と文字コードNo.09386
天翔記.jp さん 17/03/24 11:24
 
>そこで、Shift-JISの第2バイトがおかしいというエラーとして最初に検出すれ
>ば、かなり問題は低減されると思うので、そういう対策も検討します。

β8試させていただきました、対策ありがとうございます。

ただ、このエラーメッセージ内容では、
「マクロにはsjis/utf8/utf16があって、utf8/utf16にはBOM必要」
というのが、かなり強く頭に叩き込まれている人以外、

「え?」という感じで、対処法の導線には、なりにくいような印象を受けますが、ど
うですか?


[ ]
RE:09386 秀丸マクロ保存時と文字コードNo.09387
秀丸担当 さん 17/03/24 12:14
 

確かにメッセージ内容はわかりづらいと思います。
Shift-JISとして解釈されていて、UTF-8かもしれないといったようなメッセージ
内容に改善したいと思います。

[ ]