nkfを使ったネットワークフィルタ(漢字コードについて)
require 'jcode.pl'; open(OUT,"| /usr/lib/sendmail -t"); print OUT "To: 配信先Eメール\n"; print OUT "From: 送信元Eメール\n"; print OUT &jis("Subject: メールのタイトル\n"); #全角文字を送信する場合はJISに変換する print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain; charset=iso-2022-jp\n"; print OUT "\n"; print OUT &jis("メールの内容A\n"); print OUT &jis("メールの内容B\n"); close(OUT); sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis'); return $msg; }
open(OUT,"| /usr/local/bin/nkf -j | /usr/lib/sendmail -t"); print OUT "To: 配信先Eメール\n"; print OUT "From: 送信元Eメール\n"; print OUT "Subject: メールのタイトル\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain; charset=iso-2022-jp\n"; print OUT "\n"; print OUT "メールの内容A\n"; print OUT "メールの内容B\n"; close(OUT);
test.csh #!/bin/csh set kazu="キムタク" <-これはパソコンで書いたのでSJISだ! echo $kazu test.html 以上略 みなさん、私は<!--#exec cmd="./test.csh"-->です。<p> 以下略 これだと、SSI埋めこみの前後はSJISで『キムタク』がEUCだったりします。 そこで漢字コード変換プログラムであるフリーソフトのnkfを利用します。 みなさん、私は<!--#exec cmd="./test.csh | /usr/local/bin/nkf -s"-->です。<p> -s でSJISを出力させる。入力コードは自動判別してくれる。
- nkfのソース(C言語でかかれたプログラム)をダウンロードします。
nkfの説明書はここにあります。
- それをあなたのディレクトリ(どこでもいいが、私はホームページを置いてあるpublic_htmlという ディレクトリ下にbinという名前のサブディレクトリを作って置いています)にFTPでアスキーモードで 転送します。私の環境(Windowsからリムへ)の場合、FTPをバイナリ転送すると^Mコードが改行の 場所に入ってしまいコンパイルできませんでした。
- パソコン通信でリムに入りシェルモードにします。転送した場所までディレクトリを移動したあと、 コンパイルします。ccでなくてgccでもコンパイルできます。
%cc nkf.c -o nkf (nkf.cをコンパイルし、nkfという名のオブジェクトを作成する。) コンパイルが成功すれば、特になにも表示せず%プロンプトが出ます。作成したnkfのオブジェクトの パーミッションは755になっていると思いますが、確認します。 %ls -l nkf (-rwxr-xr-xならOKです。もし違っていたらchmodします。) %rm nkf.c (必要なくなったソースを削除します。)- ccやgccの場所はプロバイダに聞くこと。