utf-8に変換で文字化け

JBAアビスパ退避のスクリプトCANDY CGI (ありがたや・・・・)で配布しているRSS reader Type1を元に、色々カスタマイズして動かしてます。

で、ここ2日ほどで以下の改造を加えました。

・FeedPP実行部分のマルチスレッド化

UTF-8変換部を修正

上は処理時間を短縮したかっただけで、そこらにたくさん転がっているサンプル通りの改修なんですが(とは書いたものの、portsで入るperlは非threadedなのでコンパイルしなおし。おかげで色々動かないものが出てきて難儀しました)、下は文字化けが気になったのでアレコレ試してみました。

具体的には以下のような箇所が文字化けてしまってました。

・"hogehoge"のような文字列

どう書いていいのかよくわかりませんが、ascii文字でマルチバイト文字を挟んでいると化けます。

色々試行錯誤してたら、化けない書き方がありました。

化ける

Jcode::convert(\$site_t, "utf8");

化けない

Jcode::convert("\$site_t", "utf8");

Jcodeが悪いんや!と思い込んでスクリプト自体はEncode使うように変更した挙句、結局上記に気づいたという・・・・

スクリプトそのものは、もうEncodeで動いてるんでとりあえずJcodeはサヨナラといたしました。

(というか、Jcodeが悪いも何も、今のJcodeはEncodeのラッパーになってるんですね。)

Encodeでも

&from_to("$site_t",$fromcode,"utf8");

もしくは

&from_to(\$site_t,$fromcode,"utf8");

ってやんないと化けます。

お試しあれ。