#文字コード
最近のLinux Distributionはほとんど文字コードがUTF-8になってますが、ちょと前まではEUC-JPが多かったです。 Sun Solarisでも SunOS4.Xの頃はEUC-JPがメインでしたね。
それでなんですが、一部都合でEUC-JPの環境が残ってます。それようのサーバを作る必要がありまして、CentOS7で設定してみました。
このサーバで提供しているのはsshでのログインとsamba です。(仮想環境なんでGUIは試してませんが、おそらく文字化けしてダメじゃないかな。。)
#文字コードの切り替え
参考文献
http://zero-config.com/centos/changelocale-002.html
上記文献を参考にしました。
現在のロケール。
$ localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
ロケール変更(root作業)
$ localectl set-locale LANG=ja_JP.eucjp
変更されたかの確認
$ localectl status
System Locale: LANG=ja_JP.eucjp
VC Keymap: jp
X11 Layout: jp
$ more /etc/locale.conf
LANG=ja_JP.eucjp
以上で変更できます。
#だがしかし
UTF-8の環境から上記サーバにsshでログインしてみてください。文字コードがUTF-8になってます。
$ echo $LANG
ja_JP.UTF-8
なんでや!
原因追及に時間がかかりましたが、/etc/ssh/sshd_configの設定で環境変数LANGなどが引き継がれていました。
EUC-JPのサーバで以下の修正を行ってください。(関係ありそうなのをすべて止めてます。一つ一つ確認していません)
/etc/ssh/sshd_config
# 以下の行をすべてコメントに変更
#AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
#AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
#AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
sshdの再起動。
$ /sbin/service sshd restart
以上で引き継がれなくなると思います。
Emacsの設定
EUC-JPに文字コードを変更します。
; 加筆
(set-language-environment "Japanese")
(set-terminal-coding-system 'euc-japan)
(set-keyboard-coding-system 'euc-japan)
(set-buffer-file-coding-system 'euc-japan)
(setq default-buffer-file-coding-system 'euc-japan)
(prefer-coding-system 'euc-japan)
(set-default-coding-systems 'euc-japan)
(setq file-name-coding-system 'euc-japan)
これでデフォルトで文字コードがEUC-JPになると思います。
Sambaの設定
文字コードを指定してください。この文字コードの指定はsambaが作成するファイル名のみに影響します。Sambaで共有するファイルの本文は影響しません。
[global]
....
unix charset = EUCJP-MS
....
以上で、とりあえずEUC-JPで動いていますが、なんか不具合があれば加筆します(^_^;