WindowsとUNIX系では改行文字が異なる
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だけを処理する方法もあります。