Atom で文字コードを UTF-8 に変更する方法


Atom で文字コードを UTF-8 に変更する方法

How to change character code to UTF-8 from another code such as Shift_JIS with the Atom.

21世紀のハック可能なエディタ Atom で文字コード変換について検索すると convert-to-utf8 を利用する、と教えられます。

間違っていないのですが、 同時に auto-encoding パッケージを利用しているとうまく変換できないのでその辺りの事を書いておきます。

はじめに

MS-Windowsユーザからテキストファイルを頂くと、未だに

Content-Type: text/plin; charset="Shift_JIS"

となっています。このままでも良いのですが、Shift_JIS には致命的な弱点、文字コードの2バイト目に各種のプログラミング言語の制御コードに良く使われる ¥(0x5C)を利用した漢字が割当てられています。このため、例えば正規表現の検索などの処理を行う際に問題となります。

Shift_JISコードには、他にも問題となるコードを多く含んでいます。詳しく知りたい方は、
Shift_JISのダメ文字 などを参考にしてください。

Atom エディタを利用して

  • 最新の MS-Windows から頂いた Shft_JIS コードで記述されたファイル
  • ちょっと前の UNiX系から頂いた EUC-JP コードで記述されたファイル

などを UTF-8 コードに変換する方法です。

準備するもの

  1. Atom エディタ
  2. UTF-8 に変換する Shift_JIS コードなどのテキストファイル

事前準備

変換には convert-to-utf8 パッケージを利用するのでインストールします。

インストール方法は、2種類

  • Settings を利用する方法
  • apm を利用する方法

apm を利用する場合は、コマンドラインで以下を実行します。

$ apm install convert-to-utf8

auto-encoding の無効化

auto-encoding は、ファイルを開いた際に自動的に Shift_JIS や EUC-JP などの文字コードを判別し、文字化けから解放してくれます。文字コードを変換する必要がなければ、とても便利な拡張モジュールです。

ところが、文字コードを自動判別する auto-encoding パッケージを利用していると、変換がうまく機能しないので、無効化もしくは削除します。

無効化は

$ apm disable auto-encoding

削除は

$ apm remove auto-encoding

有効化されているパッケージは、次のコマンドで確認できます。

$ apm list --installed --enabled

UTF-8 変換の手順

手順は、以下の通りです。

  1. ファイルを開く
  2. 文字コードを UTF-8 に変換する
  3. ファイルを保存する

少し詳しく説明します。

ファイルを開く

変換するファイルを開きます。
auto-encoding を利用していないので Shift_JISコード等のファイルを開くと、 文字化け 状態となります。

文字コードを UTF-8 に変換する

’Packages’ メニューから 'ConvertToUTF8' を選び、ファイルの文字コードを選択します。

選択した文字コードが正しければ、文字化け が解消され、内容が読める状態になります。

指定した文字コードが間違っていたら、文字化け は解消されません。

このような時は、慌てずに Undo(Edit -> Undo ⌘Z)しましょう。

ファイルを保存する

正しく文字コードが UTF-8 に変換されたら、まずは保存し、作業を続けましょう。

変換が必要ない場合

文字コードを変換せずに、そのまま作業を続ける場合は、正しいエンコーディングを指定する必要があります。

'Edit' メニューから 'Select Encoding'(⌃⇧U)を選び、リストの中から文字コードを選択してください。

おまけ

実は、nkf を使えば、双方向変換、行末の改行コードの変換まで一発で行えます。
convert-to-utf8 の利点は、ファイル名を変えずに編集中のファイルの文字コードを変更できる事です。

UTF-8 を Shift_JIS に変換する

わがままな MS-Windows の利用者にファイルを差し上げると、

「読めない」とか「文字が化ける」

と言われる場合は、

$ file convert-character-code.md
convert-character-code.md: UTF-8 Unicode text

なファイルを文字コードを Shift_JIS に変換し、

行末の改行コードを LF から CRLF に変更して渡し直す必要があります。

残念ながら convert-to-utf8 は、逆方向の変換が出来ません。

このような場合は nkf(Network Kanji Filter) を使います。

$ nkf -WsOLw convert-character-code.md convert-character-code_sjis.md

オプションの意味は、

  • UTF-8 を Shift_JIS に変換 Ws
  • 出力ファイル名を指定 O
  • 行末の改行コードを CRLF に変換 Lw

nkf を使えば、Shift_JIS から UTF-8 への変換も出来ます。詳しくは、

$ nkf --help

または

$ man nkf

で確認してください。

nkf は標準コマンドでは無いので macOS ユーザならば、Homebrew を利用してインストールできます。

$ brew install nkf