SJISでダウソ

ちょっと訳あって、sjisのwebアプリを作ってます。DBはPostgres(EUC_JP), 言語はPerl (SJIS)、HTMLもSJIS
Postgresもsjisネイティブにしたかったけど、eucかutf8しかサーバ側のエンコーディングは対応していないので、クライアントエンコーディングsjisにして対応。具体的には、DB connectの前に、
$ENV{PGCLIENTENCODING} = "SJIS";
とするだけ。

結構SJISではまってしまった。ソースにエラーメッセージとか書いてたけど、カタカナの「ソ」とかが特殊文字として扱われて実行エラーが出た。

それ以外に、CGIモジュールのescapeHTMLでタグエスケープしてたんだけど、これでもはまった。。。基本的には問題ないけど、「菊」とか「技」とか、sjisの1バイト目が8Bで始まる文字が化ける。しょうがないので、タグエスケープの関数を自作。これで回避できた。
文字コード問題はややこしい。出来れば避けて通りたい。

sub deltag {
    $_[0] =~ s/&/&/g;
    $_[0] =~ s/\'/"/g;
    $_[0] =~ s/\"/&#39/g;
    $_[0] =~ s/</&lt;/g; 
    $_[0] =~ s/>/&gt;/g; 
    
    return $_[0];
}