メモ帳で保存した文書の改行が削除されました

メモ帳で保存した文書の改行が削除されました

非常に奇妙な状況が発生しています。

(Windows 7 Enterprise、SP1、64 ビットを実行)

職場で使用している GUI (この目的のために特別に構築され、Windows 環境で実行するように意図されています) は、.dat ファイルを生成します。使用する前に、少し編集する必要があります。普通のメモ帳で開き、編集して保存します (すべて正常に見えます)。任意のプログラム (メモ帳、Notepad++ など) で再度開くと、すべての「新しい行」/「入力」/改行が削除され、すべてが 1 つの長い行としてごちゃ混ぜになっているように見えます。

保存せずにメモ帳で開いて閉じるだけでは何も変化せず、改行は正しい位置にあります。Notepad++ または別のプログラムでドキュメントを開いて保存しても、改行は影響を受けません。内容を Notepad++ にコピーして、メモ帳に戻すと、この問題は修正されます。メモ帳でその後保存しても、改行は行われません。

さらに厄介な問題は、この動作が GUI が生成するすべての .dat ファイルに適用されるわけではないことです。適用されるのは一部のみなのです。

何が起こっているのか、そしてそれをどのように修正すればよいのか、何か良いアイデアはありますか?

この問題を解決するには、GUI がファイルを生成する方法を変更する必要があり、GUI についてはバグレポートを送信できるため、これは受け入れられる回答です。

しかし、私の上司はこれまでこの問題に遭遇したことがなく、同じバージョンの GUI とメモ帳を使用してファイルに若干の変更を加えているため、可能性は低いようです。また、この問題は最近になって初めて発生し、一貫性がありません。以前この問題が発生したファイルは、この現在のファイルの反復でメモ帳を使用して保存しても改行が失われません。

編集: 詳細情報: ファイルを上司に送信し、上司のコンピューターのメモ帳で開いて保存してもらいましたが、何もおかしなことは起こりませんでした。保存して閉じ、再度開いた後も、改行はすべてそのままでした。送信プロセスによってファイル内の何かが修正されたか、または私のコンピューターに何か問題があるかのどちらかです。

保存されたファイルと保存されていないファイルの 16 進数を見ると、私が知る限り、保存されていないバージョンには行間に 0D0A があり、保存されたバージョンには、最後の 1 つのインスタンスを除いて 0D0A のすべてのインスタンスがありません (これは、ファイルが開かれたり変換されたときに Notepad++ によって追加されたのではないかと思います)。

再度編集: 機密情報を編集した後の「未保存」ファイルの 16 進バージョン:

2320504C4541534520434845434B3A20
544845524D5F43617020616E64204465
70436170206265666F72652072756E6E
696E67202121210D0D0A0D0D0A706172
616D20696E697469616C203A3D20313B
0D0D0A706172616D2054203A3D313735
32303B0D0D0A706172616D206474203A
3D20333630303B0D0D0A0D0D0A706172
616D204950505F4F524F203A3D20302E
313233343B0D0D0A706172616D205448
45524D5F4F524F203A3D20302E313233
343B0D0D0A706172616D20544845524D
5F436170203A3D2031323334353B0D0D
0A706172616D20446570436170203A3D
31323334353B0D0D0A234D572C204465
70656E6461626C652043617061636974
79206F662073747566660D0D0A090909
234E756D6265727320666F7220726566
6572656E63653A207468696E67732E0D
0D0A09090923446570656E6461626C65
204361703A2073747566660D0D0A7061
72616D20425546464552203A3D20303B
0D0D0A706172616D20636F6E76657274
203A3D20312E303B0D0D0A0D0D0A7061
72616D09525245534E504F494E545309
3A3D20353B0D0D0A706172616D095252
4553424B50093A3D0D0D0A31092D3132
33343530200D0D0A32092D3132333435
3030200D0D0A330930200D0D0A340931
32333435200D0D0A3509313233343520
0D0D0A3B0D0D0A0D0D0A706172616D09
525245534C4F5045093A3D0D0D0A3109
2D3132333435452D30350D0D0A32092D
3132333435452D30350D0D0A33092D31
32333435452D30350D0D0A3409313233
34350D0D0A3B0D0D0A0D0D0A2357696E
64792073747566660D0D0A706172616D
2057494E445F49433A3D0D0D0A706C61
63650931323334350D0D0A3B0D0D0A0D
0D0A706172616D207468696E67793A3D
0D0D0A706C6163650931323334350D0D
0A3B0D0D0A0D0D0A706172616D204F50
545F5265733A3D0D0D0A7468696E6709
300D0D0A3B0D0D0A0D0A

これは、メモ帳に保存して再度開いた後の 16 進コードです。

2320504C4541534520434845434B3A20
544845524D5F43617020616E64204465
70436170206265666F72652072756E6E
696E6720212121706172616D20696E69
7469616C203A3D20313B706172616D20
54203A3D31373532303B706172616D20
6474203A3D20333630303B706172616D
204950505F4F524F203A3D20302E3132
33343B706172616D20544845524D5F4F
524F203A3D20302E313233343B706172
616D20544845524D5F436170203A3D20
31323334353B09706172616D20446570
436170203A3D383632362E313B234D57
2C20446570656E6461626C6520436170
6163697479206F662073747566660909
09234E756D6265727320666F72207265
666572656E63653A207468696E677309
090923446570656E6461626C65204361
703A207374756666706172616D204255
46464552203A3D20303B706172616D20
636F6E76657274203A3D20312E303B70
6172616D09525245534E504F494E5453
093A3D20353B706172616D0952524553
424B50093A3D31092D31323334353020
32092D31323334353030203309302034
0931323334352035093132333435203B
706172616D09525245534C4F5045093A
3D31092D3132333435452D303532092D
3132333435452D303533092D31323334
35452D303534092D3132333435452D30
353B2357696E64792073747566667061
72616D2057494E445F49433A3D706C61
63650931323334353B706172616D2074
68696E67793A3D706C61636509313233
34353B706172616D204F50545F526573
3A3D7468696E6709303B0D0A

答え1

<CR><LF>背景が少しわかるかもしれません。メモ帳では、行末であると判断して改行を実行するために、ファイルに両方が含まれている必要があります。これらの文字のいずれかが欠落している場合は、それらをスキップしてすべてを 1 行で表示します。<CR><LF>は、DOS/Windows マシンの標準の改行シーケンスですが、Unix/Linux およびその派生製品では<LF>改行として を使用します。開いているファイルには のみが<LF>含まれている可能性が高いため、メモ帳では正しく表示できません。

おそらく、これらのファイルは、テキストの書式設定に関する Windows/DOS 規則に従わないプログラムによって作成されたものです。これが Windows でのみ実行されることを意図している場合、特にファイルがメモ帳で編集されることになっている場合は、バグ レポートが適切だと思います。

当面は、Notepad++ でのみファイルを開いて編集することをお勧めします。

問題をデバッグしたい場合は、16 進エディターをダウンロードして、行末に何が含まれているかを確認してください。Windows の適切なフォーマットでは、16 進コード 0d 0a が含まれている必要があります。どちらかが欠落しているか順序が異なる場合は、問題が発生します。メモ帳から保存したことのない新しいファイルと、保存したことがあるファイルでこれを試してください。

関連情報