
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で質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
エクセルVBA コードが同じでも...
-
ExcelをCSV書き出す場合のシー...
-
C言語で特定の行を抽出する方法...
-
FindFirstFileとFindNextFileで...
-
Windows漢字フォルダ名の扱い(...
-
Perlを利用してテキストフ...
-
batファイルでrenameができませ...
-
readdir()で得られるファイル・...
-
JSP URLに表示される拡張子 .jsp
-
【C++/CLI】ファイルオープンに...
-
CGIから外部コマンド実行時の標...
-
perlでファイルの比較
-
C言語でファイル名を取得
-
perl CGIでのhttpヘッダー出力...
-
close()で例外が投げられる理由
-
fgets で値が取得できない
-
構造体とファイル入出力につい...
-
openした後、closeしないでプロ...
-
バッチファイルの作り方(CSV→...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perl cgiの文字化けを直したい ...
-
【エラー】Unrecognized character
-
Perl UTF8で出力
-
perlでuse utf8でsjisのファイ...
-
perlの自作ライブラリについて
-
Perl:Unicodeプロパティ作れない
-
perlのmysqlで文字化けをする、...
-
does not map to shiftjis は解...
-
sedの動作
-
Perlを用いて、XMLファイルの中...
-
消費税の計算で 税込価格から...
-
Perl utf8上でshiftjisをデコード
-
perlのLWP::Simpleでgrepの値が...
-
perlで新規ファイルを作成でき...
-
utf-8のCSVをshift_jisに変換し...
-
Perlでのファイル出力における...
-
HTTP::Request::Common qw(POST...
-
[Perl]Shift-JISのXMLを解析する場
-
[perl5.8] utf8で文字出力する...
-
ファイル出力をUTF8Nではなくて...
おすすめ情報