web-dev-qa-db-ja.com

Windowsのメモ帳とメモ帳++は、同じファイル内の改行を異なる方法で表示します

データを取得してテキストファイルに1行ずつ挿入するPerlスクリプトを作成しました。そのファイルをNotepad ++で開くと、テキストの2行ごとに空の行区切りがあるように見えます。次に例を示します。

AAVX    Etracs Daily Short 1 Month S&P

ABCS    Guggenheim Abc High Dividend Et

ABI     Safety First Trust

ただし、同じファイルを標準のWindowsメモ帳で開くと、次のようにスペースなしで表示されます。

AAVX    Etracs Daily Short 1 Month S&P
ABCS    Guggenheim Abc High Dividend Et
ABI     Safety First Trust

問題は、どのメモ帳を信頼すべきか、そしてなぜそれが起こるのかということです。

5
Eugene S

これは、 [〜#〜] eol [〜#〜] 制御文字が正しくない場合に発生します。 Windowsは、改行をcarriage return + line feedで表します。

Notepad ++では、次を選択してこれらの文字を確認できます。

表示>記号を表示> [x] Show End of Line

notepad++

データが次のようにフォーマットされるように、スクリプトを変更する必要があります。

CRLF

11
iglvzx

設定はありますか

Edit > EOL Conversion

何か効果はありますか? UNIXに切り替えてみてください。

4
Dennis

通常のWindowsEOL CrLfに加えて、Windows以外のEOL文字があります。 Notepad ++は、さまざまなEOL文字をすべて理解し、それらをすべて表示します。 Windowsのメモ帳はそれほどスマートではなく、Windows以外のEOL文字をスキップします。

私はPerlを知りませんが、これが私に起こったとき、それはほとんどの場合、私が送信している文字列の最後にWindows以外のEOL文字が含まれているためです。文字列の最後の文字のAsc文字コード値をテストし、それがcarriage returnの場合は削除します。

VBAの例

If Asc(Right(sName, 1)) = 13 Then
   sName = Left(sName, Len(sName) - 1)
End If
2
mischab1