CGI

UTF-8とCGI

最近はUTF-8で記述しているサイトが多く、これまで使用していたCGIを流用させてみる。

Encodeモジュールを使用して

use Encode;
use CGI;

#文字をデコード
$body = decode (‘utf8’,$str);

# ~、-など文字化け対策
$body =~ tr/[\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}]/[\x{301c}\x{2016}\x{2212}\x{00a2}\x{00a3}\x{00ac}]/;

#JISコードに再度変換
$body = encode (‘jis’,$body);

文字化け対策が必要な文字は
「~」「∥」「-」「¢」「£」「¬」

==PR==
色鉛筆,カラーペンシル ナイフ,短剣 緑,植物,グリーン,葉,葉っぱ ソリ 車,トラック 机,デスク,椅子,チェアー,テーブルセット,応接セット 船,帆,ボート トマト,ミニトマト ミリタリー,BOX 箱,BOX,小物入れ 洗濯バサミ,ピンチ 積み木,おもちゃ 地図,世界地図 ジクソーパズル,ピース ビーチサンダル 拳銃,銃,鉄砲,ライフル 積み木,おもちゃ,組み木 家,ハウス 椅子,テーブル,応接セット,テーブルセット 酒,ワイン,洋酒,ボトル

Jcode.pm

よくお問い合わせフォームのCGIで「jcode.pl」を使用してエンコードしているcgiが多い。

最近はxhtmlが主流となりutf−8で記述することが多くなったため、
そのページで今までのcgiを使おうとすると、文字化けするわするわ。
こまったちゃんです。

今さらながら解決法を探っていると「Jcode.pm」の存在を知ったのでメモしておく。

使い方は簡単。
Jcode.pm」をダウンロードしてjode.plと同じようにcgiと同じ階層にアップロードして「Jcode.pm」を使えるようにPerlソースに以下の1行を書きます。

use Jcode;

そして、変換するときに下記の例を参考に記入。

Jcode::convert( $str , "sjis", "utf8" );

第2引数が変換後の文字コードで第3引数が元の文字コードです。
文字コードの指定には、”jis”、”sjis”、 “euc”、”ucs2″、”utf8″が使えるようだ。

勉強になったわ〜。

==PR==
携帯電話 緑,植物,グリーン,葉,葉っぱ フィルム,映画 ノート,ペン ボックス,バッグ 机,デスク,椅子,チェアー 椅子 テレビ,ブラウン管 色鉛筆,カラーペンシル 本,BOOK,ファイル,バインダー 絵の具 枯葉,落ち葉 ダンボール,段ボール,箱 チケット,券 鉛筆削り,シャープナー 鍵盤,ピアノ テレビ,液晶テレビ ジクソーパズル,ピース ナイフ いちご,イチゴ,果物