新規作成やASCIIのときのエンコードNo.40155
(-L-) さん 22/12/11 14:47
 
新規作成のときは仕方ないかもですが、0バイトの時や、ASCIIのみのファイルを開い
たときは、拡張子によって扱うエンコードのデフォルト値を変えたいのですが、設定
やマクロで実現できる方法はないものでしょうか。
(例:.batならS-JIS、.htmlならUTF-8をデフォルトにしたいなど。拡張子の種類で
指定したい)

[ ]
RE:40155 新規作成やASCIIのときのエンコNo.40157
Iranoan さん 22/12/11 17:05
 
(-L-) さんこんにちは Iranoan です
> 新規作成のときは仕方ないかもですが、0バイトの時や、ASCIIのみのファイルを開
>いたときは、拡張子によって扱うエンコードのデフォルト値を変えたいのですが、
>設定やマクロで実現できる方法はないものでしょうか。
> (例:.batならS-JIS、.htmlならUTF-8をデフォルトにしたいなど。拡張子の種類
>で指定したい)
「自動起動マクロ」→「新規作成直後」に登録してやればできると思います

[ ]
RE:40157 新規作成やASCIIのときのエンコNo.40158
(-L-) さん 22/12/11 17:08
 
>「自動起動マクロ」→「新規作成直後」に登録してやればできると思います

思いますけど、そんな命令文を見つけられませんでした。

[ ]
RE:40158 新規作成やASCIIのときのエンコNo.40159
Iranoan さん 22/12/11 18:00
 
On 2022-12-11 17:08 +1000,  (-L-) wrote:
> >「自動起動マクロ」→「新規作成直後」に登録してやればできると思います
>
> 思いますけど、そんな命令文を見つけられませんでした。
「そんな命令文」は何を指すのでしょう?

もっと簡単な方法が有るかもしれませんが、次のマクロを登録したら出来ているよう
です
//----------------------------------------------------------------------
// 空のファイルを作成でメッセージ OFF
seterrormode 3, 0xF00;

//ファイルタイプ別の設定を書いていく
if( filetype == ".html" || filetype == ".htm" ){
 saveas filename2, utf8, nobom;
 deletefile filename, 0;
}

[ ]
RE:40159 新規作成やASCIIのときのエンコNo.40160
(-L-) さん 22/12/11 18:43
 
>もっと簡単な方法が有るかもしれませんが、次のマクロを登録したら出来ているよ
>うです

サンプル提示ありがとうございます。

ただ、0バイトの時はそれでも大丈夫そうなのですが、既存(ASCII)ファイルを開い
た時に、編集(内容更新)していなくてもファイル日付が変わってしまうとか、dele
tefileされているタイミングで秀丸エディタが異常終了したときにロストしてしまう
ような気もしたため怖いから試せていません。(動作はするということなのです
が。。)

[ ]
RE:40160 新規作成やASCIIのときのエンコNo.40161
(-L-) さん 22/12/11 18:49
 
htmlでも既存ファイルがs-jisなら、そのまま。新規や既存でASCIIならutf-8とか、c
svでもタイトル行があるやつは、Excelでも開くからBOM有がいいとか、タイトル行な
くデータ行しかないやつは、BOM無くてもいいとか、既存でASCIIならとかとか。。
なんか色々パターンがあるなと気がついてしまったので、マクロは無理そうな気がし
てきました。

ありがとうございました。

[ ]
RE:40160 新規作成やASCIIのときのエンコNo.40162
Iranoan さん 22/12/11 21:29
 
(-L-) さんこんにちは Iranoan です
> ただ、0バイトの時はそれでも大丈夫そうなのですが、既存(ASCII)ファイルを開
>いた時に、編集(内容更新)していなくてもファイル日付が変わってしまうとか、d
>eletefileされているタイミングで秀丸エディタが異常終了したときにロストしてし
>まうような気もしたため怖いから試せていません。(動作はするということなので
>すが。。)
提示したのは「新規作成直後」用です
それ以外のときに使うマクロではありません

> 0バイトの時や、ASCIIのみのファイルを開いたときは
に関しては、その判定を加えたマクロを組んでやればよいでしょう
例えば前者なら
if( linecount2 == 1 && strlen(gettext(0, 0, 2, 0, 1)) == 0)
で、ASCII のみなら
searchdown "[^\x00-\xFF]", regular, loop;
if( !result )
で判定できます

ただ新規作成時以外の文字コードは、「ファイルタイプ別設定」で対処すれば実用十
分だと思います
またもう今どきなら、標準文字コードを UTF-8 にしておいたほうが良いのかも

[ ]
RE:40162 新規作成やASCIIのときのエンコNo.40165
秀丸担当 さん 22/12/12 14:34
 
一応設定としては、[その他]→[動作環境]→[ファイル]→[エンコード1]の、[新規作
成やASCIIのとき]の指定があります。

ファイルタイプ別には、[その他]→[ファイルタイプ別の設定]→[その他]→[保存・
読込み]に設定がありますが、ASCIIかどうかで分ける設定はファイルタイプ別には無
いです。
あと最近は、[その他]→[動作環境]→[環境]→[editorconfig]で.editorconfigファ
イルを置いておくことで指定ができますが、ASCIIファイルかどうかの判定はeditorc
onfigではできないです。

ファイルタイプ別の設定を追加するといったことも考えられなくもないですが、さら
にいろいろなパターンでcsvの内容などによってということになると、むしろマクロ
を使わないとできないと思います。

[ ]