CGI設置覚書
2017-03-12


投票設置にあたり、以前使用していたフリー配布CGIを引っ張り出す。
こういう作業はすぐに忘れるので覚書。

設置するこのブログ(アサブロ)は文字エンコードがUTF-8。
しかしCGIはShift-JISを吐き出すため、投票時のコメントが文字化けする。

対策として、CGI同梱のJcode.plをUTF-8に対応したJcode.pmに入れ替え。
併せてCGI内の該当箇所を書き換え。

●冒頭
require './jcode.pl';
 ↓
use Jcode;

●文字変換部分
&jcode::h2z_sjis (*val);
&jcode::convert(*val, 'sjis', '', 'z');
 ↓
Jcode->new(*val,"utf8")->h2z->euc;
(※h2z……半角カナ→全角カナ変換)

●注意点
jcode::からJcode::という、単なる置き換えではダメ。
ここでしばらくつまずいた。(参考サイト1

・Jcode.pmで文字列比較などを行う場合、HTMLフォームから受け取るUTF-8の文字列はいったん内部コードをeucにして処理を行う。
Jcode->new(*val)->h2z->utf8;では文字化けは直らない。
また、受け渡す値の文字コードは明示しておいたほうがいい。
省略してJcode->new(*val)->h2z->euc;としても、やはり直らない。(参考サイト2

・プログラム同梱のログ等のひな形ファイル、xxx.log、xxx.datの文字コードをUTF-8にしておく。すでに作成されたファイルも同様。
でないと、CGIは全て修正されたはずなのに何故文字化けが続く!?と発狂することになる。
読み込んでいるlog、datデータがShift-JISのままなことにようやく気付けてよかった。

ちなみにPerl 5.8からはEncode.pmが標準モジュールとなっているので、いずれこちらも試してみよう。(参考サイト3)(参考サイト4
[インターネット]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット