阿部です。

On Sat, Jan 26, 2008 at 01:56:58PM +0900, 久慈敏信 wrote
> 
> 環境はFreeBSD 6.2-RELEASE-p10です

同様の環境で再現しました。

 
> JISコードで書かれたテキストファイル(メールアーカイブです)jis.txt を、
> 一行ずつ読み込んでファイルに書き足してゆく操作での文字化けの回避策に
> ついてお尋ねします。

たぶん、JIS のエスケープシーケンスの部分が問題なのだと思います。
つまり、16進数で 5c に相当するコードが sh の read 関数で問題となるので、
read 関数に -r オプションを付けると解決しました。
# -r の詳細は man sh で調べてください。

[ 修正前 ]

        while read LINE

[ 修正後 ]

        while read -r LINE

とすると、

> ===========================================
> 明けましておめでとうございます。
> 本年もよろしくお願いいたします。
> ===========================================

の結果が得られました。


ちなみに、test1 と test2 を次のコマンドで比較すると分かります。

        % od -t a test1
        [ ここに dump データが出力されます ]

        % od -t a test2
        [ ここに dump データが出力されます ]

test1 では test2 の出力と違い、バックスラッシュが消えています。
od については同様に、man od で調べてください。

ではでは。
-- 
阿部康一/Kouichi ABE (WALL)
[メールアドレス保護]
http://www.MysticWALL.COM/
4196 185C B814 8F96 D170  B492 71A8 1B2B B9D5 5CF5

メールによる返信