• ベストアンサー

文字コードの混在しているファイルの変換

webのログを取っているのですが, URLデコード -> nkf -s としています.しかし,URLデコードしたファイルは,google等はutf-8で他はs-jis等で,文字コード(s-jis, euc, utf-8)が混在しているファイルとなってしまいます. 最終的な出力ファイルをs-jisに統一したいと思っています.nkfで行おうとしたところ,どうもうまくいきません.-Xs オプションをつけるとutf-8の部分がちゃんと表示されません.-Wsオプションをつけると今度はs-jis,eucが出力されません. なにかうまい方法はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

失敗失敗、URL を張りそこなってしまいました。以下をご覧ください。失礼しました。

参考URL:
http://homepage2.nifty.com/ssfu/others/computer/linux_iconv01.html#main_04
optcom
質問者

補足

早速のお返事ありがとうございます. iconvあたってみます. iconvでは1行毎にコードが異なるファイルも対応出来ますか? ところでnkfも2.0以降はunicode対応しているようです. 自己解決(?)したかもしれないので,報告させて頂きます. 理由はわからないのですが, nkf -Ww | nkf -s または nkf -Ww | nkf -Ws とパイプするとうまくいくようです. nkf -w | nkf -Ws nkf -Ws 等はだめです. -Wwの時だけ動作が違うのでしょうか...

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

perlとかを使って、1行ずつ、漢字コード変換をかけていけば。

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.1

nkf は utf-8 には対応していなかったのではなかったでしょうか。 iconv コマンドを使いましょう。ただ、iconv の場合変換元コードを 自動判別はしてくれなかったと思います。 $ iconv -f utf-8 -t sjis file.utf8 > file.sjis

参考URL:
http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=man+iconv&lr=lang_ja

関連するQ&A