RHEL7系でSJISを使う方法

Linux上のソースコードやコンソール出力をターミナルで正常に表示するには、OS・ソースコード・ターミナルの3つが同じ文字コードである必要です。

そうでなければ文字化けを起こします。文字化けにハマって時間を使ってしまうケースが多いので対処方法をまとめておきます。

ターミナル確認

OK。RLOGINではGUIで設定できます。

OS文字コードの確認

まずはOSの確認

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)

続いて文字コードの確認。デフォルトはUTF-8でした。

$ echo $LANG
en_US.UTF-8

RHEL7.5にSJISを追加

RHEL7.5ではデフォルトで選択可能な文字コードにSJISがありません。

$ locale -a | grep ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

スーパーユーザーに変更して

$ sudo su -

対象のロケールリソースをコンパイルして使用できるロケールを追加します。

# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
character map `SHIFT_JIS' is not ASCII compatible, locale not ISO C compliant

tomcatユーザーに戻って

# exit
$ sudo su - tomcat

SJISができていることを確認します。

$ locale -a | grep ja
ja_JP
ja_JP.eucjp
ja_JP.sjis
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

出来てることを確認できたら設定します。

export LANG=ja_JP.sjis

設定できてか確認します。

$ echo $LANG
ja_JP.sjis

ソースコード

SJISで読み書きできるように作成したソースコード(ファイル)であることが必要です。上記の設定でソースコードを表示し、文字化けが起きていなければOKです。

これで無事にRHEL7系でSJISを使うよう設定することができました。