miyu
[E-Mail]
2000/02/10(木) 21:46:06
Perlを使ったCGIプログラムで,あるデータベースファイルにある
文字列を検索するプログラムを書いています.検索キーワードを
指定すると,該当する文字列を表示し,その文字を赤太字に強調します.
プログラムができて,動作確認のため「1(全角)」をキーワードに
指定すると,太字部分が文字化けしてしまいました.調べてみると,
それは「撮影」という文字で,さらに句点コードを調べてみると,
1:0317
撮:2703
影:1738
ということで,撮影27[0317]38というパターンで「1」と認識
するようです.これを回避するにはどうしたらよいのでしょうか?
ちなみに,プログラムはShift-JISでかいていますが,文字列の
入る変数は,jcode.plでEUCコードに変換しています.
具体的には,
$key を検索キーワード,$logをファイルから読み出した文字列とすると,
(あらかじめ&jcode'convert( *k, 'euc' );で変換済み
if( $logs =~ m#$key# ){ #検索文字列が含まれていたら
$logs =~ s/$key/<FONT COLOR=\"FF0000\"><B>$key<\/B><\/FONT>/g;
}
のようにしています.そのあと,CGIとして出力する際には,
Shift-JISコードに変換しています.