sambaの文字コードはUTF-8に設定するとベスト

はてな人力検索への回答です。
http://q.hatena.ne.jp/1182403623

文字コードいろいろ

日本語文字コードの代表としては、「Shift_JIS」「EUC-JP」「UTF-8」があります。
このうち「Shift_JIS」と「EUC-JP」には完全な互換性がありません。
また「UTF-8」へ変換するための正式な変換テーブルもないためこれが標準というのはありません。

まだ運用を始めて間もないなら「UTF-8」のままがお奨めです。
Debianのsambaで確認しましたが、デフォルト「UTF-8」のようです。
どれを取っても若干の問題がでてくるので、国際規格を選択したほうが後々いいような気がします。

文字コード関連の設定

とりあえず「UTF-8」前提で説明します。

はじめにターミナル(putty/Teratarm/Poderosa)で文字コードの設定が必要です。

Linux搭載のターミナルなら、メニュー→端末→文字コードの設定
puttyなら、ウィンドウ→変換→受信されるデータの文字セット変換
などで設定できると思います。

次にシェルのLANG環境変数UTF-8に変更します。

たぶん標準でEUC-JPになっているので文字化けしていたのだと思います。

LANG環境変数を変更
# export LANG=ja_JP.UTF-8
LANG確認
# env |grep LANG

ログアウトすると元に戻ってしまうので、「.bashrc」を変更しておきます。

viで.bashrcを編集、次の行を追加する
# vi .bashrc
export LANG=ja_JP.UTF-8
最後にsambaの設定を変更です。

smb.confの[global]セクションで全体の設定を行います。

[global]行の下に次の3行を追加する
# vi /etc/samba/smb.conf
[global]
   dos charset = CP932
   unix charset = UTF8
   display charset = UTF8

パラメータの説明です。

最後にsambaをリロードします。

# /etc/init.d/samba reload
EUC-JP や Shift_JIS にしたい場合

EUC-JP

ターミナルを EUC-JP
.bashrc を export LANG=ja_JP.EUCJP
unix charset を EUC-JP

Shift_JIS

ターミナルを Shift_JIS
.bashrc を export LANG=ja_JP.sjis
unix charset を CP932
SJISにおいてシェル側で文字化けする場合

localeにコレクションされていない可能性

# locale -a
sjisがない場合
# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS


参考情報