|
cronで走らせているrsyncのログが文字化けしていた。
kccやnkf --guessオプション あるいはiconvで調べるとどうやら
ASCIIコードとなっているようだ。
ところが、ロケールとして設定しているEUCはASCIIのサブセットに
なるので、nkfやiconv lvを使ってもきちんと変換してくれない。
そもそも設定してるロケールの文字コードでログが吐き出されていない
ことがおかしいので、正しい文字コードで出力するようにスクリプトを
変更した。
元々はcrontabにてコマンドをフルパスでダラダラと書いていたのを
別スクリプトとして書き直した。
さらにそのスクリプトの1行目に
#!/bin/bash
2行目に
export LANG=ja_JP.eucjp
を付け加え、実行コマンドを書いた。
いくつかテストしてみると今度はうまく行ってるようで、2バイト文字の
ファイル名でも文字化けせずにログに吐いていた。
原因はまだはっきりと調べていないが、cronが実行されるときの
実行環境とログインしているときのロケールが異なっているから
だと推測する。
なので、cronが実行されるときにもロケールを明示的にしてやる
ことで文字化けを回避できるのではないか、と思う。
|

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- UNIX



