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
パラメータの説明です。
- dos charset = Windows側の文字コードを指定
- unix charset = sambaサーバ側の文字コードを指定
- display charset = SWATというWEBからsambaを設定するツールで表示される文字コードを指定
- CP932は、SJISにWindows独特のを混ぜたものです。
最後に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 .bashrc を export LANG=ja_JP.sjis unix charset を CP932
SJISにおいてシェル側で文字化けする場合
localeにコレクションされていない可能性
# locale -a sjisがない場合 # localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
参考情報