
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に変換したい場合は
本来どう書くものなのでしょうか?
No.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

No.2
- 回答日時:
#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表示にカスタマイズしたい感じです。

No.1
- 回答日時:
cgi の文字コードや、
ロケールなどがわからないので、
方向違いでしたら済みません。
\xC2 関連のエラーは、検索するとたくさん出てきますね。
http://lists.debian.org/debian-devel/2005/02/msg …
こちらのページを読む限り、
use utf-8 プラグマを使えば良いのではないかと思ったのですが、
いかがでしょうか
この回答への補足
回答ありがとうございます。
>cgiの文字コード
cgiの文字コードですか?
ファイルの文字コードもUTF8、
書き出そうとしているHTMLもUTF8です。
>ロケール
ロケールというのは、何でしょうか?
何と何があるのかすら、わかりません。
>\xC2 関連のエラー
質問投稿前に検索はしてみましたが、
直面している問題の解決になるのか
判別がつかなかったため、投稿致しました。
>use utf-8 プラグマ
これはどうやって使うものでしょうか?
ファイル内のどこに書き込んだら良いのか、
記述の仕方や場所も教えていただけるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
Wallpaper Engineでおすすめの...
-
bashスクリプト
-
TeraPadエディターの操作方法に...
-
perl 正規表現でエラー
-
Perl 特定のフォルダ以外削除
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
vimでのutf8の取扱について
-
ファイル出力をUTF8Nではなくて...
-
perl5.8.3のunicode環境で日本...
-
csv2wiki.plのエンコーディング...
-
<STDIN>とARGVとの振る舞いの違...
-
utf-8での日本語正規表現の書き方
-
[Perl]Shift-JISのXMLを解析する場
-
Perl UTF8で出力
-
Perlの文字コードを意識したフ...
-
[perl5.8] SJISで出力したはず...
-
perlをwindows環境でshift-jis...
-
Perl utf8上でshiftjisをデコード
-
HTTP::Request::Common qw(POST...
-
Perl出力をUTF-8に指定する方法
-
文字を一文字ずつ区切りたい
-
does not map to shiftjis は解...
-
複数種類の括弧でくくられてな...
-
perlの自作ライブラリについて
-
初心者で、困っています。(文...
おすすめ情報