【Linux】viコマンド(vim)で開いたファイルが文字化けした場合の対処法

【Linux】viコマンド(vim)で開いたファイルが文字化けした場合の対処法

Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3523

vimで日本語ファイルを扱う際に必須のエンコーディング設定を丁寧に解説します。vimで開いたファイルが文字化けしていた場合は「:set encoding」で文字コードを変更します。恒久的な対応は、vimrcファイルに設定を追加します。encodingやfileencodingの違いを理解し、柔軟に文字化け対応できるようになりましょう。


更新履歴


お役立ちツール


Linuxユーザにお勧めの本

vimで日本語のファイルを開いたときに「文字が読めない」「記号ばかりになる」といった 文字化け に悩まされたことはありませんか?特にWindows、Linux、macOSなど異なるOS間でファイルをやり取りする場合、文字コードの不一致はよく発生する問題です。

本記事では、 vim 文字化け の原因から、今すぐ直せるコマンド、そして二度と困らないための恒久的な設定方法まで、初心者の方にも分かりやすく徹底解説します。

[!NOTE] この記事のポイント

  • 原因は文字コードの不一致: ファイルの保存形式とvimの認識、またはターミナルの設定がズレていることが原因です。
  • 一時的な対処: :e ++enc=[文字コード] コマンドを使って、正しい文字コードでファイルを読み直します。
  • 恒久的な対処: .vimrcencodingfileencodings の設定を追加し、自動判別を有効にします。
  • 環境設定も重要: サーバー側だけでなく、Tera Termなどのターミナル側の文字コード設定(UTF-8等)も合わせる必要があります。

正しくない文字コードによる文字化け

文字化けとは、正しい文字コードで表示されていないことで、記号や意味不明な文字列になってしまう現象です。例えば、本来「こんにちは」と表示されるはずの文字列が「ÓÂáÓÉ」のようになるケースがあります。

vimで起きやすい文字化けの特徴

  • 日本語が「??」や記号で表示される
  • 改行位置が崩れる
  • 特定の行だけ表示が乱れる

こうした文字化けのほとんどは、エンコーディングの不一致が原因です。

なぜvimで文字化けが起こるのか?

vimの文字化けは、次のような原因で発生します。

エンコーディングの不一致

  • ファイルのエンコーディングが「UTF-8」なのに、vimが「Shift_JIS」で解釈している場合
  • 編集環境(ターミナルやOS)とvimの設定が違う

UTF-8とShift_JISの混在

  • Windowsで作成されたファイルがShift_JISになっていることが多い
  • macOSやLinuxではUTF-8が標準

OS間でのファイル移動

USBメモリやクラウドで単純にコピーしただけでは、文字コード自体が変わることはありません。
ただし、別のOSやエディタで開いて再保存した場合に、保存時の設定によって文字コードが変更されることがあります。また、FTPのASCII転送モードなどを使用した場合にも、意図せず変換が行われることがあります。(改行コードの変換に加えて、文字コード変換を行うサーバー設定になっているケースなど。)

設定ファイルの干渉

.vimrcなどで fileencodingsencoding が適切に設定されていないと、vimがファイルを誤った文字コードとして判定する場合があります。

ターミナルとvimの設定不整合

ターミナルの文字コード設定がvimと合っていないと、表示が文字化けするほか、コピー&ペースト時に文字が壊れる場合があります。

vimエンコーディングの設定手順

vimで開いたファイルが文字化けした場合は、:e ++enc=[文字コード]を指定して開きなおします。恒久的に対応する場合は、vimの設定ファイルを編集し、デフォルトの文字コードを変更する必要があります。

以下UTF-8のファイルを例に説明します。

確認例
$ cat sample.txt
vim文字コードの確認テストです。

vimでファイルを開きます。

コマンド
vim sample.txt

以下のように文字化けして表示されることを確認しました。

画像1

コマンドで文字化けを直す(一時的な対処)

vimでファイルを開いた後に文字化けしていることに気づいた場合、まず現在のファイルの文字コードを確認しましょう。

コマンド
:set fileencoding?

fileencoding=[現在の文字コード] が表示されます。ここで表示される値は、vim が「このファイルをどの文字コードとして扱い、保存時もその文字コードで書き出すか」を示します。
※ 自動判別に失敗している場合、実際の文字コードと異なる値になり、その状態で保存すると 別の文字コードで上書きされてしまう ことがあるので注意してください。

そのうえで、正しい文字コードを指定して読み直します。

:e ++enc=[文字コード]で開き直す

:e ++enc=[文字コード]で指定した文字コードでファイルを「開き直す」ことができます。

コマンド
:e ++enc=utf-8

※ 未保存の変更がある場合はエラーになります。
必要に応じて :e! ++enc=utf-8 で強制再読込できます。

ファイルの元の文字コードにあわせて、cp932 (Shift_JIS) や euc-jp なども試してみてください。

vimを立ち上げるたびに手動で設定するのは面倒なため、設定ファイルに記述して自動化しましょう。

/etc/vim/vimrc(システム全体の設定)

サーバー全体で共通の設定を適用したい場合は、システムのvimrcを編集します。

※ ファイルの場所はディストリビューションによって異なります。 例:

  • Debian/Ubuntu系:/etc/vim/vimrc
  • RHEL/CentOS系:/etc/vimrc
  • macOS(Homebrew版):/opt/homebrew/etc/vimrc など
設定例 (~/.vimrc)
" エンコーディング設定
set encoding=utf-8
set fileencodings=utf-8,cp932,euc-jp
設定項目意味
encodingvimが内部的に使用する文字コード。常に utf-8 にしておくのが無難です。
fileencodings既存のファイルを開く際、上から順番に自動判別を試みるリスト。

[!TIP] fileencodings の順序は重要です。UTF-8 を先頭にして、その後に cp932euc-jp を記述しておくと、多くの日本語ファイルは自動判別で正しく開けるようになります。
ただし、UTF-8 と Shift_JIS などがどちらとしても解釈できてしまうようなケースでは、まれに誤判定が起きることがある点には注意してください。

vimrcファイル編集後は、文字化けしていたファイルを再度開いてください。

コマンド
vim sample.txt

文字化けが発生していないことを確認します。

画像6

~/.vimrc(ユーザー個別の設定)

個人の作業環境であれば、ホームディレクトリにある ~/.vimrc を編集するのが一般的です。ファイルがない場合は新規作成してください。

コマンド
vim ~/.vimrc

Tera Termでのエンコーディング設定方法

Tera TermはWindowsユーザーに人気の高いターミナルソフトですが、デフォルトのエンコーディングがUTF-8以外に設定されている場合があり、vimの文字化けの原因になることがあります。

文字コード設定手順

  1. Tera Termを起動
  2. 上部メニューから 「設定」→「端末」 をクリック
  3. 「受信:文字コード」で 「UTF-8」 を選択
  4. 「送信:文字コード」で 「UTF-8」 を選択
  5. OKを押して保存

TERATERM.INIに設定を保存する

  1. 上部メニューから 「設定」→「設定の保存」
  2. TERATERM.INI として保存し、次回以降も自動でUTF-8が使われるようにします

この設定によって、vimやサーバー上で編集した日本語ファイルがTera Term上で正しく表示されるようになります。

また、Tera Termのフォント設定も日本語対応フォント(例:MS Gothic、Meiryo)を使うことで、文字化けのリスクをさらに軽減できます。

まとめ:vimの文字化けを完全に防ぐには

  1. .vimrcでUTF-8を明示的に設定する
  2. fileencodingsを複数定義して柔軟に対応できるようにする
  3. ターミナル側もUTF-8に設定する
  4. OS間のファイル移動後は一度エンコーディングを確認する
  5. UTF-8で保存するよう他のエディタ(VSCodeなど)も設定する

vimでの文字化けは、設定ファイルのミス・ターミナルとの不整合・エンコーディングの知識不足が原因の大半です。 これらを意識すれば、ほとんどの文字化け問題は回避または修復できます。

【GitBash】文字コードの変更方法(文字化け対策)
ITナレッジライフ

【GitBash】文字コードの変更方法(文字化け対策)

GitBashで日本語の出力が文字化けした場合、localeの設定がSJISになっていない可能性があります。本記事では日本語の文字化けを解消するGitBashの設定方法を解説します。

この記事はお役に立ちましたか?


Linuxユーザにお勧めの本


以上で本記事の解説を終わります。
よいITライフを!
目次

役に立ちましたか?

Thanks!
Scroll to Top