プロが教える店舗&オフィスのセキュリティ対策術

Jcode.plを使いShiftJISで出力しているcgiファイルを、
Jcode.pmを使ってUTF8で出力できるように修正していた所、
Internal Server Errorが発生。

Perl文法チェッカーを使い、エラー内容を調べてみると
Unrecognized character \xC2 at test.cgi line 168, line 846.

cgiファイル168行には↓
&Jcode::convert(\$val, 'utf8');
ここまで↑

Jcode.pmの846行目には↓
sjis SHIFT_JIS
ここまで↑

と表記されています。

cgiファイルの168行が間違っているのはわかるのですが、
「\xC2」が何を指しているのかさっぱりわかりません。
$valの中にあるテキストをutf8に変換したい場合は
本来どう書くものなのでしょうか?

A 回答 (3件)

今、「Perl」でググると、1位がWikipediaで、2位がkent-web.comのPerl基礎入門といったように、旧来からのコンテンツが上位にあって、初心者がモダンなPerlの書き方を探すのが少しめんどくさい状況にあります。

(2008/06/16)
http://www.itmedia.co.jp/enterprise/articles/080 …

世間に溢れている掲示板のCGIではJcode等を利用して文字コードの変換を行うのが常識とされており,実際に私もjcode.plやJcode.pmを利用してきた。しかし,Jcodeモジュールはutf8フラグまで考慮されておらず,Perl5.8においては,文字コード変換はEncodeモジュールに任せるのが一貫性が取れている。(2005/06/01)
http://blogs.dion.ne.jp/riji/archives/1203431.html

>utf8に変換したい場合は本来どう書くものなのでしょうか?

上記のとおり,Perl 5.8をお使いなら,標準モジュールのEncodeを用いるのがあるべきコーディングスタイルだと思います。
http://okwave.jp/qa4413021.html の私の過去の回答 ANo.3
および,その回答からさらにリンクでたどることができる私の過去の回答を参照。

もっと詳しい解説がお望みならこちらを。
http://www.rwds.net/kuroita/program/Perl_unicode …
http://www.bugbearr.jp/?Perl%2FUnicode
    • good
    • 0

#1です。


自分の環境でも再現させてみたいので、
追加で質問なのですが、
以下で合っていますでしょうか。

修正前:
cgi ファイルの文字コード = UTF-8
入力される文字列 = SJIS
出力する文字列 = SJIS
Jcode.pl を使用

修正後:
cgi ファイルの文字コード = UTF-8
入力される文字列 = SJIS
出力する文字列 = UTF-8
Jcode.pm を使用

ロケールやuse utf-8プラグマについては、
原因でない可能性もあるので、
とりあえずおいておいてください。

この回答への補足

回答ありがとうございます。

HTMLのFORMで入力したものをcgiファイルで受け取り、
結果表示ページをcgiで表示したいと考えております。

文字コードに関しては
修正前は全てSJISだったものを、
修正後は全てUTF-8に変えたいと思っています。
Jcodeについてはその通りです。

今更で申し訳ないのですが、参考にしているのは
「KENT WEB」の「Topics Board」という掲示板です。
↑これを全部UTF8表示にカスタマイズしたい感じです。

補足日時:2008/12/05 15:57
    • good
    • 0

cgi の文字コードや、


ロケールなどがわからないので、
方向違いでしたら済みません。

\xC2 関連のエラーは、検索するとたくさん出てきますね。

http://lists.debian.org/debian-devel/2005/02/msg …
こちらのページを読む限り、
use utf-8 プラグマを使えば良いのではないかと思ったのですが、
いかがでしょうか

この回答への補足

回答ありがとうございます。

>cgiの文字コード
cgiの文字コードですか?
ファイルの文字コードもUTF8、
書き出そうとしているHTMLもUTF8です。
>ロケール
ロケールというのは、何でしょうか?
何と何があるのかすら、わかりません。
>\xC2 関連のエラー
質問投稿前に検索はしてみましたが、
直面している問題の解決になるのか
判別がつかなかったため、投稿致しました。

>use utf-8 プラグマ
これはどうやって使うものでしょうか?
ファイル内のどこに書き込んだら良いのか、
記述の仕方や場所も教えていただけるとありがたいです。

補足日時:2008/12/05 13:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!