*** nkfってなになの? [#pc095b72]

- nkfは漢字コードの変換フィルターです。作られた目的はUNIX上で「メールやニュースの読み書き」するために~
作られたものですが、その高機能な漢字変換は他の用途にも応用可能なため色々なところで使用されています。

- このnkfの作者、たしかワタシの記憶では富士通社員さんが趣味みたいな感じでつくったと記憶しておりますが、~
10年位前の1990年代は、「フリーウエアで生計」なんてのが流行していて、あの秀丸とかも富士通社員・・・~
みなさん元気だったんだなあーと。いまのご時世だと会社を作っちゃうのかな?ねえ。

: 前提条件 | COLOR(RED){''nkf''}パッケージがインストール((パーケッジの[[インストール方法>パーケッジのインストールの巻]]はこちらを参照))されていることが条件。~
パッケージの確認は、COLOR(RED){''rpm -q nkf''}コマンドで確認できるよ。~

*** nkfを使ってみる [#r53a9454]

- たとえば元のファイルがsjisであり、それをEUCに変換したいときは、以下のようにするだけ。簡単でしょ。
 % nkf -e hoge

*** nkf活用編 [#t95e4286]

- 実はワタシのメインサイトのhtmlファイルが、全て漢字コードがsjisになっていて直接ファイルを修正しようにも~
EUCに変換してcharsetを修正してという作業が面倒だったのでスクリプトを書いて一括変更しようと思ったのがキッカケ。

- [[拙作シェルスクリプト>http://www12.plala.or.jp/ksp/prog/script/script.html#html-3]]さんのサンプルを参考にさせて頂き実行すると非常に快適に変更できたので、とりあえずok。~
と思ったら、いきなりディレクトリ名を間違えてしまい変更したいディレクトリでないところを変更されてしまい~
かなり泣きがはいりました。。。とほほ。

- なのでディレクトリが存在しないときのチェックと、サブディレクトリまで対応するようにちょっと修正してみました。
 #! /bin/sh
 test -z "$1" && echo "Usage: conv-euc <directory>" && exit
 
 if [ ! -d $1 ]; then
    echo "$1 directory not found."
    exit 1
 fi
 
 cd "$1"
 
 # HTMLファイルの文字コードを変換する.
 find . -type f -name '*.html' | while read html; do
     echo "$html"  # 進行状況を表示
     # eucに変換
     tmpfile=`basename "$html" .html`$$.html
     /usr/bin/nkf -e -Lu $html > $tmpfile
     mv "$tmpfile" "$html"
 done
 
 # HTMLファイルのヘッダを書き換える.
 find . -type f -name '*.html' | while read html; do
     # perlで置換
     /usr/bin/perl -i -p0777e "s/(<meta\s.*?charset=)\w.*(['\"])/\$1EUC-JP\$2/gi" "$html"
 done

*** 参考にさせて頂いたサイト様 [#ua89926b]

- [[拙作シェルスクリプト [物理のかぎしっぽ]>http://www12.plala.or.jp/ksp/prog/script/script.html#html-3]]
- [[UNIXの基本操作/シェルスクリプト>http://web.kanazawa-u.ac.jp/univ/center/ma5-6.html]]
- [[UNIXの部屋 [シェルスクリプト]>http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS