WindowsとUNIX系では改行文字が異なる

CRLFとLFの違い、およびWordPadやVimで変換する方法

OS別の改行文字

WindowsとUNIX系OSでは、改行の扱い方が異なります。違いは改行文字にあり、WindowsはCR+LF、UNIX系OS(Linuxなど)はLFを使用します。\r\n\nの違いとして理解すると、より分かりやすいでしょう。

記号の意味は次のとおりです。

  • \r: CR(Carriage Return)。その行の先頭へ移動します。
  • \n: LF(Line Feed)。次の行へ移動します。

OS別の改行文字は次のとおりです。

  • DOS(Windows): \r\n
  • UNIXまたはLinux: \n
  • Mac: \r。これだけでCR+LFを意味します。

OS別の改行文字問題の解決方法

この問題により、Linuxで作成したテキストファイルをWindowsで開くと、改行が正常に表示されず、正しく読めないことがよくあります。この問題を解決する方法を見ていきます。

Windows - WordPad

Windowsシステムには、スタート - アクセサリにWordPadというプログラムがあります。

Linuxで作成されたテキストファイルをWordPadで開くと、改行が正常に表示されます。

この状態で「名前を付けて保存」機能を使用すると、保存先とファイル名を指定するウィンドウが表示されます。下部の「ファイルの種類」で「テキスト文書 - MS-DOS形式」を選択できます。

これを選択して保存すると、改行がWindowsのCR+LFとして処理されて保存されるため、Windowsでも正常に使用できるテキスト文書が作成されます。

この方法でも正常に処理できない場合は、やはり問題の出発点であるLinux側で処理するのが最も早い方法でしょう。

UNIX系OS - VIM

対象のファイルをVIMで開きます。

LinuxのVIMでは、Windows形式のファイルをUNIX形式へ、UNIX形式のファイルをWindows形式へ自由に変換できます。まずはWindows形式のファイルをUNIX形式に変換する例です。

:set ff=unix

あとは保存するだけです。とても簡単です。

UNIX形式のファイルをWindows形式に変換するのも同様に簡単です。

:set ff=dos

まとめ

このようなエディタを使えない状況であれば、FTPからダウンロードするときに最初からASCIIモードでダウンロードし、自動変換されるようにする方法があります。最後に、\r\n\nを扱う非常に簡単な方法として、\r\nを無条件に\nへ置換し、\nだけを処理する方法もあります。