charsetをutf-8に

HTML ファイルの文字コード自体は、大雑把に UTF-8 へ変換したんだけど…


ちなみに、使ったコマンドはこんな感じ。

find ./ -name "*.html" -print > /tmp/work.txt
find ./ -name "*.htm" -print >> /tmp/work.txt
while read i
do
  echo $i
  iconv -f EUCJP -t UTF-8 $i > ${i}.utf8
  if [ $? -eq 0 ]; then
   rm -f $i
   mv ${i}.utf8 $i
  else
   rm -f ${i}.utf8
  fi
done < /tmp/work.txt
rm -f /tmp/work.txt

参考にさせて頂いたサイト様
> http://www.cyber.t.u-tokyo.ac.jp/~jnakano/blog/2008/08/eucno.html


charset が EUC のままなので、不便極まりない状態。


こんなとき、活躍するのは置換。
Windows上にデータがあれば、EmEditor の機能(但し Professional版)で一気にやっちゃうんだけど…
一度全部のデータを Windows に戻して、もう一度アップロードしないといけないのが面倒に思えてパス。
Linux 上であれば、たしか perl でファイルを直接書き換えるコマンドがあった。
でも、書き方をド忘れしたw


使い慣れた sed で行くか…


ってことで、次のようなコマンドを考えてみる。

find ./ -name "*.html" -print > /tmp/work.txt
find ./ -name "*.htm" -print >> /tmp/work.txt
while read i
do
  printf "${i} "
  sed -e "s/charset=euc-jp/charset=utf-8/g" ${i} > ${i}.utf8 2> /dev/null
  if [ $? -eq 0 ]; then
   rm -f $i
   mv ${i}.utf8 $i
  else
   rm -f ${i}.utf8
  fi
  echo ""
  grep charset $i
  echo ""
done < /tmp/work.txt
rm -f /tmp/work.txt