はじめての気象データ処理

このブログでは、気象を学ぶ方でも超初心者を対象として気象データ解析のための基礎基本を解説します。主にFORTRAN、Python、GMT、GrADSのTipsをご紹介します。

Excelで日本語を書いたらLinuxで文字化けする!文字コードを変換しよう

こんにちは、チャリおじさんです。

みなさんはこういう経験ありませんか?

「viでファイルを開いたら、日本語部分が文字化けしてしまった!」

もしやあなた、そのファイルはExcelで作ったのでは?

でも大丈夫!文字コードを変換すれば、ちゃんとviで正しく表示されて、編集したり、コマンド操作できるようになりますよ。

なぜ文字化けするのか

Excelというソフトは、【Shift-JIS】という文字コードで保存するようにできています。これは変更できないようです。

対して、viなどLinuxターミナルは、【UTF-8】という文字コードでファイルを読み込むようになっています。

ファイルの文字コードと読み込む側の文字コード設定が一致しないと、文字化けしてしまいます。

viで編集するだけなら

viでは読み込む文字コードを変更することができます。

コマンドviの中で編集する場合は簡単に文字化けを直すことができます。

コマンドモードで、↓を打ってみましょう。

:e ++enc=sjis

どうですか、正しく表示されたと思います。

ターミナル上でコマンド操作するなら

しかし、ターミナルのコマンドライン上で操作する場合はファイルの文字コードを【UTF-8】にしないとエラーになってしまいます。

grepコマンドで”気温”という文字列を含むファイルを探す」とか、
sedコマンドで”南”を”北”に置換する」とか、できないのです。

これを解決するために、nkfコマンドを使って、ファイルの文字モードを変換します。

nkfコマンドをインストールする

おそらく初期状態だと使えないので、nkfをネットからダウンロード後、解答、インストールする必要があります。

やり方は以下のサイトを参考にしてください。

開発ツール/Cygwinにnkfをインストールする方法 - Windowsと暮らす

nkfコマンドの使い方

$   nkf -[オプション] 元ファイル名 > 変更後ファイル名

で、ファイルの文字コードを変更できます。

元ファイルに上書きしたい場合は、

$   nkf -[オプション] --overwrite 元ファイル名

でできます。

オプションには、何の文字コードに変換するかを指定します。

今回は【UTF-8】に変換するので、オプションは -w です。

例えばaaa.csvを変換して上書きする場合は、

$   nkf -w --overwrite aaa.csv

です。

ちなみに

以下のオプションも便利そうです。

-g 元ファイルの文字コードを検索する

-s  Shift-JISに変換する

-e  EUCに変換する

-Lu  改行コードをWindowsからLinuxに変換する (CR+LF→LF)

改行コードについては、また別の記事で紹介しましょう。

最後に

いかがでしたか。

無事に日本語がgrepsedに引っかかってくれるようになったでしょうか。

それではまた次回。チャリおじさんでした。