保存時の改行コードNo.21333
fujioka さん 06/05/24 17:53
 
shift-jisモードでtextファイルを編集したあと、保存すると意図しない改行コード
が付加されます。
たとえば、
元データ:83 4d 0d 0d 0a 90 ...
ここで2バイト文字834d のあとに 1バイト文字 78を挿入
で保存すると
保存データ:83 4d 78 0d 0a 0d 0a 90 ...
のように1個目の0dのあとに0aが挿入されます。
挿入位置や挿入文字のタイプ(1バイト文字、2バイト文字)でも同じです。
この0aが挿入されないようにする方法はないでしょうか。
ファイルをEUCで開くと、2バイト文字で当然ながらエラーになってしまいます。改行
処理だけEUC風にできればよいのですが。


[ ]
RE:21333 保存時の改行コードNo.21334
fujioka さん 06/05/24 18:37
 
バイナリーモードで編集すればOKですが、テキストモードでなければなりません。

[ ]
RE:21334 保存時の改行コードNo.21335
秀丸担当 さん 06/05/24 19:31
 

秀丸エディタは改行コードが混在するものをそのままの状態で保存することはで
きません。
[CR+LF]/[LF]/[CR]のいずれかに自動的に認識され、保存するときは統一して
保存されます。

>元データ:83 4d 0d 0d 0a 90 ...

の場合、0d 0d の時点で2つの改行としてみなされますが、0d と 0a があると
いうことで最終的に[CR+LF]の改行コードのファイルであるとして認識します。
EUCでも同じになります。

他にも 00 を空白に変換したりします。
テキストファイルとして読み込む限り、テキストとしてうまく認識できないもの
はバイナリの状態をそのまま維持して保存ということにはならないです。

ちなみに特殊な事情でも無い限り、改行コードが 0d 0d 0a ということにはなら
ないはずですが、どうして 0d 0d 0a ということになっているのか、参考までに
教えていただけないでしょうか。

[ ]
RE:21335 保存時の改行コードNo.21336
fujioka さん 06/05/24 21:32
 
ご返事ありがとうございます。

>秀丸エディタは改行コードが混在するものをそのままの状態で保存することはで
>きません。
>[CR+LF]/[LF]/[CR]のいずれかに自動的に認識され、保存するときは統一して
>保存されます。

うーん、残念ですね。


>テキストファイルとして読み込む限り、テキストとしてうまく認識できないものは

おっしゃることはわからないこともありませんが、
読んだ時点で、それなりにおかしくなく読めていますので、
変換は保存時点ではなく、読んだ時点でなされるのではありませんか。
そのあたりを確かめるために(他にも必要と感じることがありますが)、
カーソルのある文字の16進表示ができればよいのになと思うことがあります。

>ないはずですが、どうして 0d 0d 0a ということになっているのか、参考までに
>教えていただけないでしょうか。

このテキストはACDSeeなる画像管理ソフトがテキストファイルでexportするファイル
です。このファイルを、秀丸で一括編集をやってみたいことがあるのです。0aが挿入
されると、そのファイルをinportしたとき、改行がひとつ余分になるのです。

0dを0d0aとみなさなくとも、それなりに編集できるようなモードがあればよいのです
が。

それから、本題と直接関係ないですが、バイナリーモードがありますね。
これには、文字が併記されると便利な場合がよくあるのではありませんか。
文字と関係ない完全なバイナリーなら、現在のスタイルでよいですが、文字が混じっ
ている場合、今回のようにバイナリーではどうなっているかを調べるときに便利だと
思います。(今回の場合は16進ダンププログラムで調べました)

また、秀丸でカーソルのあるところの文字のバイナリーコードが表示されるのも便利
かと思います。


[ ]
RE:21336 保存時の改行コードNo.21340
秀丸担当 さん 06/05/25 10:09
 

>おっしゃることはわからないこともありませんが、
>読んだ時点で、それなりにおかしくなく読めていますので、
>変換は保存時点ではなく、読んだ時点でなされるのではありませんか。
>そのあたりを確かめるために(他にも必要と感じることがありますが)、
>カーソルのある文字の16進表示ができればよいのになと思うことがあります。

変換は、読み込んだ時点で行なわれています。
カーソル位置の文字コードは、キー割り当てなどをした「文字コード表示」コマ
ンドを実行することで知ることができます。
先行開発中のV6.00βではステータスバーに常に表示することもできます。

ただし、改行のコードは表示されません。
改行コードは全て同じで、[その他]→[動作環境]→[ウィンドウ]→[高度なウィ
ンドウ]→[タイトルバーの表示]で、エンコードの種類を「常に表示+改行コー
ド」にしておくと知ることができます。
あるいは、ステータスバーを表示(非合体)でも知ることができます。

>このテキストはACDSeeなる画像管理ソフトがテキストファイルでexportするファイル
>です。このファイルを、秀丸で一括編集をやってみたいことがあるのです。0aが挿入
>されると、そのファイルをinportしたとき、改行がひとつ余分になるのです。
>
>0dを0d0aとみなさなくとも、それなりに編集できるようなモードがあればよいのです
>が。

ありがとうございます。
そういうコードを出力してしまうことがあるのですね。

>それから、本題と直接関係ないですが、バイナリーモードがありますね。
>これには、文字が併記されると便利な場合がよくあるのではありませんか。
>文字と関係ない完全なバイナリーなら、現在のスタイルでよいですが、文字が混じっ
>ている場合、今回のようにバイナリーではどうなっているかを調べるときに便利だと
>思います。(今回の場合は16進ダンププログラムで調べました)

バイナリモードでそれに対応した文字が表示されたら便利だと思います。
そういうネタとしてあるので、意見を参考にしたいと思います。

[ ]
RE:21340 保存時の改行コードNo.21341
fujioka さん 06/05/25 11:25
 
>変換は、読み込んだ時点で行なわれています。
>カーソル位置の文字コードは、キー割り当てなどをした「文字コード表示」コマ
>ンドを実行することで知ることができます。

こんなこともできるのですか。やってみました。

>先行開発中のV6.00βではステータスバーに常に表示することもできます。

V6ではかなり拡張されるのですね。楽しみです。

>そういうネタとしてあるので、意見を参考にしたいと思います。

こちらも期待します。

[ ]