このエントリーをはてなブックマークに追加


シフトJISのログをtailしたい

Windowsで出力されるShift_JISのログをCygwinのtailコマンドで監視したい。
しかし、文字化けしてしまう。
この様な場合の対処方法です。

関連記事

動作確認環境

  • Cygwin
    $ uname -a
    CYGWIN_NT-10.0 WINPC 3.1.5(0.340/5/3) 2020-06-01 08:59 x86_64 Cygwin
  • Windows 10 ver.1909

iconvを使用する

iconvコマンドは文字コードを変換するコマンドになります。
バッファリングされてしまうので以下のように記述します。

tail -F ログファイル名 | while read L
do
  echo $L | iconv -f CP932 -t UTF-8
done

一行で書くと以下のようになります。

 tail -F ログファイル名.txt | while read L; do echo $L | iconv -f CP932 -t UTF-8; done

変換文字コードを CP932 にしています。
SJISでも同等に動作しますが、NEC,IBMが拡張した文字が非対象となります。
詳細は以下のリンクを参照してください。

nkfを使用する

Cygwinの場合は、nkfコマンドがないのでソースからコンパイルして使用します。
nkfの入手とコンパイルは以下の記事を参考にしてください。

nkfコマンドを使った場合は、以下のようになります。
文字コードは自動判別するので、以下の記述で動作すると思います。

tail -F ログファイル名 | nkf -u

オプションの -u はバッファリングしない指定となります。

文字コードを明示的に指定する場合は、以下のようになります。

tail -F ログファイル名 | nkf -u -S -w

以上、シフトJISのログファイルをUTF-8に変換して表示する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-09 (火) 11:41:54