エンコードの種類と改行コードNo.24796
uchino さん 08/04/18 14:53
 
お世話になります。
標題の件で質問させていただきます。

秀丸エディタにて、「名前をつけて保存」ダイアログボックスで「エンコードの種
類」と「改行コード」が連動しますが、これを解除する方法はないでしょうか。

具体的には、たとえば、
「エンコードの種類」に「EUC」を指定すると、自動的に「改行コード」が「LF」に、
「UTF-8」なら「CRLF」に切り替わります。
先に「エンコードの種類」を指定してから「改行コード」を手動で任意のものに変え
ることは可能ですが、その順番を間違えたり注意していないと、意図しないものにな
ってしまうのです…。
私の場合よくあるのが、UNIX環境用のスクリプトをWindows上の秀丸エディタで書き、
スクリプトの文字コードを場合によってEUCまたはUTF-8で使い分けるのですが、UTF-
8の場合は上記の現象によって(LFで保存したいのに)CRLFで保存してしまうことが
あります。

「ファイルタイプ別の設定」⇒「その他」⇒「保存・読み込み」にて、「エンコード
の種類」と「改行コード」の両方を指定しておくと、これが保存時にも使われますが、
「改行コード」のみの指定では前述のとおりになってしまいます。

あるいは、素朴な疑問なのですが、連動する理由は何かあるのでしょうか。私の認識
では、両者は互いに無関係だと思っていたのですが、これが間違いで、何かそういう
決まり(UTF-8ならCRLFにすべき、など)があるのでしょうか。

どうぞよろしくお願いいたします。

[ ]
RE:24796 エンコードの種類と改行コードNo.24801
秀丸担当 さん 08/04/18 15:52
 

>秀丸エディタにて、「名前をつけて保存」ダイアログボックスで「エンコードの種
>類」と「改行コード」が連動しますが、これを解除する方法はないでしょうか。

これを解除する方法はいまのところありません。
連動する理由は、昔からWindowsではShift-JISでCR+LF、Unix系ではEUCでLFとい
う慣わしがあって、Shift-JISからEUCに変更するときに、EUCでCR+LFで保存され
ては困るということで、そのようにしたのだと思います。
UTF-8のときは特に理由は無いですが、Shift-JISと同じにしているだけでした。
何らかの設定を、将来的なバージョンで付けた方がいいかもしれないですが、設
定が増えすぎるというのも考え物です。

現状での回避策として、名前を付けて保存をするときはマクロを実行するように
するとかではどうでしょうか。

マクロの例
setencode 0x40 | 0x06;
SAVEAS;


あるいは、自動起動マクロでもし間違ってしまった場合に警告を出すようにする
とか。

[マクロ]→[マクロ登録]→[自動起動]で、保存直前と直後を指定。
if( event == 3 && geteventparam(0)==1 ) { //保存直後
  if( (encode & 0x3F) == 6
   && (encode & 0xC0) != 0x40 ) {
    message "UTF-8 LF 以外で保存してしまった。";
  }
}

ではどうでしょうか。
もし自動起動マクロでやる場合は、警告を出すに留めておいて、改行の変更や保
存しなおしの処理は入れないほうが安全です。





[ ]
RE:24801 エンコードの種類と改行コードNo.24808
uchino さん 08/04/18 17:12
 
秀丸担当様

早速のご返答ありがとうございます。

なるほど、歴史的な経緯などが理由で、私の知らない何か両者の関係があったという
わけではないんですね。それだけでも安心しました。
自動的に設定されるのを手動で変えて良いものか、少々不安もあったもので…

回避策のマクロも、本当にありがとうございます。ぜひとも参考にさせていただきま
す。

将来的に設定できるようにするかどうか、という件ですが、
逆に言えば、設定する必要は特になく、プラットフォームとあまり関係のないUNICOD
Eなどは自動で切り替わらなければ良い気もします。
つまり、おっしゃるとおりShift-JIS⇒CRLF、EUC⇒LF、というのは自然だし親切だと
も思えますが、UTF-*⇒CRLFというのは不都合があるかと…。最近は特に、UNIX系で
動かす前提のスクリプトなどをUTF-8で書くケースが多く、今後もっと増えるでしょ
うし。
おそらく私以外の人たちでも、問題になるのはこれだけでは、と思います。

あるいは、先ほども書きました「ファイルタイプ別の設定」⇒「その他」⇒「保存・
読み込み」にて、「改行コード」の指定が、なぜか有効にならない、というのを改善
していただくことはできないものでしょうか。
ここで両方とも指定すると、保存時にちゃんと指定したものになりますが、「エン
コードの種類」を自動のまま、「改行コード」だけを「LF」に設定しても、保存時に
はこれが反映されません。

よくやってしまう失敗は、比較的古いスクリプトがEUC、LFで書いてあり、それをエ
ンコードだけをUTF-8に変えて別ファイルに保存したつもりが、気付かないうちにCRL
Fになってしまっていた…というパターンです。いっそ大量のファイルを変換するの
であれば、マクロを使うなどで意識するから良さそうですが、必要時にやる作業では、
ついついやってしまいます…。
今はいろいろとUNICODE関係の「移行期」で、つまり使い分けるケースが多く、この
ニーズは高いと思うのですが、いかがでしょう。

[ ]
RE:24808 エンコードの種類と改行コードNo.24809
秀丸担当 さん 08/04/18 17:40
 

>
>将来的に設定できるようにするかどうか、という件ですが、
>逆に言えば、設定する必要は特になく、プラットフォームとあまり関係のないUNICOD
>Eなどは自動で切り替わらなければ良い気もします。

そうですね。そのほうがいいかもしれません。
将来的なバージョンで検討したいと思います。
もしやるとしたら、V7.09ではなく、将来的なバージョンということにしようと
思います。

>あるいは、先ほども書きました「ファイルタイプ別の設定」⇒「その他」⇒「保存・
>読み込み」にて、「改行コード」の指定が、なぜか有効にならない、というのを改善
>していただくことはできないものでしょうか。
>ここで両方とも指定すると、保存時にちゃんと指定したものになりますが、「エン
>コードの種類」を自動のまま、「改行コード」だけを「LF」に設定しても、保存時に
>はこれが反映されません。

一応、名前を付けて保存のダイアログを出した直後であれば反映していると思い
ますが、エンコードを変更すると、そのエンコードのデフォルトに自動的に切り
替わってしまいます。
たとえば、改行=LFだけを指定しておいた場合、UTF-8でCR+LFのファイルを開い
て、名前を付けて保存を出すと、あらかじめ改行=LFになっていると思います。
上記の改行維持をするとしたら、この設定はあまり関係無くなると思います。

[ ]
RE:24809 エンコードの種類と改行コードNo.24810
uchino さん 08/04/19 09:58
 
秀丸担当様

ご返答ありがとうございます。

確かに、ファイルタイプ別の設定〜の指定は、名前をつけて保存ダイアログボックス
の初期状態にのみ影響し、結局手動で切り替えると同じことなんですね。

とりあえず今のところは、ご提案いただいたマクロなどで対処したいと思います。
連動の件は、ぜひとも将来バージョンでのご検討をお願いいたします。
おそらくニーズはあり、今後増えると思います。
そしてUTF-8⇒CRLFなどの自動切り替えのニーズは、あまりないような…というかト
ラブルの元になってしまうかと…。

それでは、今回は大変ご丁寧に対応いただき、ありがとうございました。

[ ]