「別ファイルへの追加保存」とBOMNo.11057
h-tom さん 22/10/02 00:07
 
h-tom です。

OS:Windows11(21H1) x64
秀丸エディタ:Ver.9.19β12(x64)

1)「別ファイルへの追加保存」ですが、unicodeだと追加部分の先頭にBOMが付きます。
  正確にはダイアログのエンコードの指定次第で、BOMが付いたり付かなかったりし
ます。
  空のファイルに追加する場合以外は、unicodeでもBOMが付かない方がありがたいで
す。
 
  a)UTF-16LE(BOMあり)のファイルに、UTF-16LE(BOMあり)のファイルを開き、「別フ
ァイルへの追加保存」をエンコードを「自動判定」で行うと追加した先頭部分にBOM
は付かない。
  b)UTF-16LE(BOMあり)のファイルに、UTF-16LE(BOMあり)のファイルを開き、「別フ
ァイルへの追加保存」をエンコード指定「unicode」で行う追加した先頭部分にBOMが
付く。
  c)UTF-8(BOMあり)のファイルに、UTF-8(BOMあり)のファイルを開き、「別ファイル
への追加保存」をエンコードを「自動判定」/「UTF-8」ともに、追加した先頭部分に
BOMが付く。
 
  appendsave も saveas と同じオプションが使えるとのことなので、マクロ使えば
なんとかなると思いましたが「nobom」 は効いていないようです。(数値指定もダメ)
 
  //一時ファイル作る
  $basefile = getenv("tmp") + @"\_base_utf-8.txt";
  //元のファイルをUTF-8 BOM 付きで保存
  newfile;
  insert "end";
  saveas $basefile, utf8, bom;
  #main = hidemaruhandle(0);
 
  //追加する内容
  newfile;
  insert "add";
  //追加分をUTF-8 BOM 付きに設定
  setencode 6,1,1;
  #sub = hidemaruhandle(0);
 
  //間にBOMあり
  appendsave $basefile, utf8, nobom;
  //appendsave $basefile;
 
  setactivehidemaru #main;
  //追加した内容を閉じる
  closehidemaruforced #sub;
  //自動判定で再読み込み
  setencode 0;
  endmacro;
 
2)[要望] Ver.9.16以降だと、openfile で各種起動オプションが数値指定でもできる
ようになりましたが、"/h" も数値指定できるとうれしいです。

[ ]
RE:11057 「別ファイルへの追加保存」とBONo.11058
秀丸担当 さん 22/10/03 09:54
 
バグ情報ありがとうございます。
マクロで確認して、確かにそういう結果になっていることが確認できました。
空のファイル以外はBOMは付かないように修正させていただきます。

openfileのエンコード以外の数値指定で、/hもできたらいいかもしれません。
逆にJavaScriptだと数値しかできないので、予約語の文字列ではなく、普通の文字列
で指定できたらいいです。
ご意見参考にさせていただきます。

[ ]