RedHatES4 文字コード環境設定あれこれ | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

RedHatES4では、取り扱う文字コードがUTF-8となっています。

(せめてインストール時に選択できればよいんですが)既存環境から移行をする際には、この文字コードのせいで色々面倒な事に・・・。


私の環境では、PHPのアプリがこの環境上で動く事になったのですがそれを開発しているのが外部の業者であり、PHPのスクリプト自体がEUC-JPで構築されていました。


しかも、インストール時に作成されたファイルは全てUTF-8の文字コードのファイルですので、両方を見れるように環境設定しなければなりません。


※ 面倒と感じないのであれば、ファイルを開くたびに利用している端末の文字コード設定を変更すればよいです。


まず、インストール後のファイルの取り扱いについては全てEUC-JPの文字コードで運用する事にしました。

というわけで、まずはRedHatES4の取り扱う文字コードをUTF-8からEUC-JPに変更します。


変更方法は、/etc/sysconfig/i18nファイルをエディタで開き


LANG="ja_JP.eucJP"
SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.eucJP:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"

と変更します。


これで、エディタでファイルを開いてもEUC-JPの文字コードで読み書きできます。


ただ、既にあるUTF-8のコードのファイルを開こうとすると当然文字化けします。

(エディタはEUC-JPの文字コードで開こうとするので)


私の場合、エディタにviを使っていますので、viの起動時に読み込まれるスクリプト(.vimrc)にシェルスクリプトを仕込んでおきます。


下記が参考になります。


文字コードの自動認識


これで、viのエディタでファイルを開く際は、UTF-8のファイルなら文字コードUTF-8に、EUC-JPならそのように文字コードを変換して開いてくれます。


※ 文字コードを気にせずに読み書きできる環境が弊害になる場合もあるので注意が必要です。

  例えば、ファイルの文字コードがUTF-8、プログラムの内部エンコーディングがEUC-JPだった場合、そのファイル操作

  をする際にうまくファイル操作ができないなどの問題が出たりします。

  その際にその問題の切り分け、判断がつきにくくなることも考えられます。


ただ、全てのファイルを開く際にviエディタでと言うのにも問題があります。

viエディタの場合、編集が可能になるのでログファイルなどを開いて間違って編集して保存してしまうと言うような事が起きる場合があります。

ファイルを読み取り専用で開く際には、lessやmoreのページャが一般的ですが先ほど行った取り扱う文字コードをEUC-JPに変更した設定で、lessやmoreでファイルを開くと文字化けして読めません。


特に面倒に感じるのが、manコマンドでコマンドの詳細を調べようと思ってもmanの標準のページャがlessに設定されているため、日本語のマニュアルが読めない点です。


色々調べてみたのですがどうも自動認識してくれないようなので、lvというページャを利用する事にしました。

インストール方法は、こちら が参考になります。

ダウンロードは、こちら から。

インストール後は、manの標準のページャをlessからlvに変更します。


manの設定ファイルである、/etc/man.configをエディタで開き


PAGER /usr/bin/less -iRs

の箇所を


PAGER /usr/local/bin/lv

とします。


これで、manコマンドで日本語マニュアルが文字化けすることなく読めるようになります。

lvは、EUC-JPのファイルもそのまま開く事ができるので、読み取り専用のファイルを開く際にも問題ありません。