WindowsとMacで文字化け?改行コードの違いと変換方法
テキスト

WindowsとMacで文字化け?改行コードの違いと変換方法

テキストファイルを開いたら改行が消えていた経験はありませんか?CRLF、LFなど改行コードの違いと、ツールを使った簡単な変換方法を解説します。

「改行がない!」テキストファイルの謎

Windowsで作ったテキストファイルをMacで開いたり、サーバーのログファイルをWindowsのメモ帳で開いたりした時、改行がすべて消えて一行に繋がってしまった経験はありませんか? あるいは、プログラムがなぜか動かなくて調べたら、目に見えない「改行コード」が原因だった…なんてこともエンジニアあるあるです。

実は、コンピュータの世界には「改行」を表すためのコードが複数存在し、OSによって標準が異なるのです。 今回は、この厄介な「改行コード」の違いと、トラブルを回避するための変換方法について詳しく解説します。

主な改行コードの種類

改行コードは大きく3種類あります。それぞれの特徴を押さえておきましょう。

1. CRLF(\r\n)— Windows標準

CR(Carriage Return: 復帰)と LF(Line Feed: 改行)という2つの制御文字を組み合わせて「改行」を表現します。 タイプライターの動作(キャリッジを先頭に戻してから紙を1行送る)に由来しているため、2文字で1つの改行になります。 Windowsのテキストエディタやアプリケーションではこの形式が標準です。

2. LF(\n)— Unix/Linux/Mac標準

LF(Line Feed)だけで「改行」とみなします。 macOS(OS X以降)LinuxUnix系のシステムで標準的に使われています。 現代のプログラミングやWeb開発では、このLFが事実上の標準です。GitHubやほとんどのWebサーバーもLFを前提としています。

3. CR(\r)— Classic Mac

CR(Carriage Return)だけで「改行」とみなします。 非常に古いMac OS(バージョン9以前)で使われていましたが、現在はほとんど見かけません。レガシーなファイルを扱う際にごくまれに遭遇する程度です。

よくあるトラブルと具体的シナリオ

改行コードの違いが引き起こすトラブルは、日常的な作業のさまざまな場面で発生します。以下に代表的なシナリオを紹介します。

シナリオ1: Windowsで書いたスクリプトがLinuxサーバーで動かない

最も定番のトラブルです。Windowsのメモ帳やエディタでシェルスクリプト(.sh)を作成してLinuxサーバーにアップロードすると、CRLFが混入しているため /bin/bash\r: bad interpreter\r: command not found といったエラーが出ます。

解決策: アップロード前にLFに変換するか、VS Codeなどのエディタで保存時の改行コードをLFに設定しておきましょう。

シナリオ2: MacとWindows間でCSVファイルを共有する

Macで作成したCSVファイルをWindowsの古い「メモ帳」で開くと、改行が認識されず1行に繋がって表示されます。逆に、ExcelでCSVを保存するとCRLFになるため、Macのターミナルで処理しようとすると余計なCR(\r)が混じってデータが壊れることがあります。

解決策: Mac側で一括変換してからやり取りすると、互換性の問題を防げます。Jeneeの改行コード変換ツールを使えば、ブラウザ上で瞬時に変換できます。

改行コード変換Windows・Mac・Unix間の改行コード変換

シナリオ3: Gitで改行コードの差分が大量に発生する

チームメンバーがWindowsとMacを混在して使っている場合、同じファイルでも改行コードが異なるため、実質的な変更はないのに全行が変更扱いになることがあります。コードレビューの際に厄介です。

解決策: プロジェクトのルートに .gitattributes ファイルを作成し、改行コードの自動変換ルールを設定しましょう。一般的には * text=auto と記述することで、チェックアウト時にOSに合わせた改行コードに自動変換してくれます。

シナリオ4: Webフォームからのテキストが正しく処理されない

ユーザーがWebフォームに貼り付けたテキストが、バックエンドで正しく処理されないケースがあります。特に、文字数カウントをする際に、CRLFの2バイトがカウントに影響することがあります。改行コードを統一してからカウントすると正確な数値が得られます。

文字数カウントレポート、SNS投稿、原稿作成に。文字数・単語数・行数を瞬時にカウントします。

Jeneeの「改行コード変換」ツールで即解決

こうした改行コードのトラブルは、ツールを使えば一瞬で解決できます。Jeneeの改行コード変換ツールでは、ブラウザ上でかんたんに変換が可能です。

改行コード変換Windows・Mac・Unix間の改行コード変換

使い方(3ステップ)

  1. テキストを貼り付ける、またはファイルからコピーする。
  2. 変換先の形式(LF または CRLF)を選ぶ。
  3. 変換されたテキストをコピーして利用する。

たったこれだけで、目に見えない改行コードの問題をサクッと解決できます。 ソフトウェアのインストールも不要なので、急いでいる時にもすぐに使えるのが大きなメリットです。

💡 ヒント: テキストにHTMLタグが含まれていて邪魔な場合は、先にHTMLタグ除去ツールでクリーンアップしてから改行コードを変換すると、よりスムーズです。

HTMLタグ除去HTMLソースからタグ除去とプレーンテキスト抽出

開発者向け: 改行コードを防ぐための設定

トラブルを事後的に直すだけでなく、そもそも発生しないように環境を整えることも大切です。

エディタの設定

VS Code などのエディタでは、デフォルトの改行コードを設定できます。

  • VS Code: 設定画面で files.eol\n(LF)に設定
  • ステータスバー: ファイルごとの改行コードが表示されるので、クリックして切り替え可能

.gitattributes によるチーム統一

プロジェクト単位で改行コードを管理するには、.gitattributes が最も確実です。

* text=auto
*.sh text eol=lf
*.bat text eol=crlf

このように設定しておけば、OSの違いを意識せずにチーム開発ができます。

関連するテキスト処理ツール

テキストデータの処理では、改行コード以外にもさまざまな変換・整形が必要になることがあります。Jeneeでは以下のツールも用意しています。

文字数カウントレポート、SNS投稿、原稿作成に。文字数・単語数・行数を瞬時にカウントします。

テキスト差分(diff)2つのテキストやコード差分を色分け表示

重複行削除テキストの重複行削除

HTMLタグ除去HTMLソースからタグ除去とプレーンテキスト抽出

よくある質問(FAQ)

Q. 見た目では改行コードの違いがわかりませんが?

はい、一般的なテキストエディタでは、CRLFもLFも単なる「改行」として表示されるため、見た目の違いはありません。VS Codeではステータスバーの右下に「CRLF」や「LF」と表示されるので、そこで確認できます。また、ターミナルで cat -A ファイル名 と実行すると、CRLFの場合は各行末に ^M が表示されます。

Q. 改行コードを変換しても文字化けが直らないのですが?

「改行コード」と「文字コード(エンコーディング)」は別の問題です。改行コードの変換で修正できるのは、行の区切りに関するトラブルだけです。日本語の文字化け(UTF-8とShift_JISの違いなど)は、文字コードの変換が必要です。まず原因がどちらにあるか切り分けましょう。

Q. どちらの改行コードに統一すべきですか?

Web開発やプログラミングの分野では LFに統一するのが一般的 です。GitHubやほとんどのサーバー環境がLFを前提としているためです。Windows専用のバッチファイル(.bat、.cmd)など、Windows環境に特化した用途の場合のみCRLFを使用するのがベストプラクティスです。

Q. 大量のファイルを一括で変換する方法はありますか?

コマンドラインに慣れている方は、Linux/Macでは dos2unix コマンド、Windowsでは unix2dos コマンドを使って一括変換が可能です。少量のテキストであれば、Jeneeの改行コード変換ツールが手軽でおすすめです。

まとめ

「たかが改行、されど改行」。目に見えない改行コードの違いは、ファイル共有やプログラム実行において意外と大きなトラブルの原因になります。

ポイントの整理:

  • Windowsは CRLF、Mac/Linuxは LF が標準
  • 異なるOS間でファイルをやり取りする際は改行コードに注意
  • チーム開発では .gitattributes で統一するのがベスト
  • 急ぎの変換はJeneeのオンラインツールが便利

困った時は、ぜひJeneeの変換ツールを活用してみてください。

改行コード変換Windows・Mac・Unix間の改行コード変換

関連記事