放送大学 2017年10月入学生 第1回出願
2017年6月15日~8月31日 出願資料受付中

Amazon Student

放送大学の視聴方法についてはカテゴリー「講義視聴」をご覧下さい。
Macでのストリーミング視聴等も詳しく説明しています。

ちょこっとアンケートを設置しました。
質問は新年度らしく。

CGI設置覚書2017/03/12 02:10

投票設置にあたり、以前使用していたフリー配布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

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
【スパム対策】ブログ主が所属する大学名は?(漢字4文字・必須)

コメント:

トラックバック

このエントリのトラックバックURL: http://nekonote.asablo.jp/blog/2017/03/10/8399272/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。