【Jcode.pmの使い方】kentwebさんのショッピングカート「WEB MART」(http://www.kent-web.com/cart/mart.html)をワードプレスのページ内に設置したいです。しかし、文字コードが、wordpress「UTF-8」・WEB MART「SHIFT_JIS」と違っているため、フォームの情報が、ショッピングカード内では、一部文字化けしてしまいます。WEB MARTには、文字コード変換モジュール「Jcode.pm」が同梱されておりますが、「Jcode.pm 使い方」でググってみたのですが、わかりません。どなたか、Jcode.pmを使って、UTF-8のページでも文字化けせずに、WEB MARTを動かせる手順を教えてください。宜しくお願いいたします
「Jcode.pm 使い方」のウェブページの紹介はではなく、実際の手順を回答にしてください。
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
No.1
500pt
Jcode.pm 自体は、この CGI プログラム中で使われているもので、実際に、CGI プログラムの中身を見てみると、admin.cgi と order.cgi で使われています。
このプログラムが Shift_JIS での出力を前提にしているので、もし、これを使うのであれば、
- CGI プログラムのファイルをエディタ等で UTF-8 に変換して保存。
- プログラム中にある、「Jcode::convert(なんちゃら, 'sjis')」という部分の 'sjis' を 'utf8' に変更。
- プログラム中にある、'shift_jis' を 'UTF-8' に変更。
といった修正作業が必要になります。
でなければ、この CGI の出力をインラインフレームの中にでも入れて、「全体は UTF-8 だけど、この中は Shift_JIS」といった形で逃げられるかもしれません。
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。
これ以上回答リクエストを送信することはできません。制限について
回答いただき、ありがとうございます
ご指摘いただいた3つのことを実施したところ、Internal Server Errorになりました
「HTTP エラー 500(Internal Server Error): サーバーによるリクエストの実行中に、予期しない状況が発生しました。」
ちなみに、1.のご指摘を置いておいて、プログラムファイル・tmplファイルの文字コードを、
Shift_JISで実行すると、表示されますが、文字化けした状態になります
※ tmplファイルは、カートを遷移するときに表示されるHTMLファイルのことです
ちなみに、ご指摘に対する変更点は以下のとおりです
何か、間違っていること、もれていることがありますでしょうか
大変お手数ですが、ご確認、ご返信いただけますと大変嬉しく思います
よろしくおねがいいたします
> 1. CGIプログラムのファイルをエディタ等で UTF-8 に変換して保存。
WEB MART内のcgiファイルをUTF-8に書き換えました
(文字コード変換ツール for .NET 2.0を使いました)
admin.cgi
check.cgi
init.cgi
mart.cgi
order.cgi
WEB MART内のtmplファイルをUTF-8に書き換えました
もちろん、メタタグもUTF-8に書き換えました
※ tmplファイルは、カートを遷移するときに表示されるHTMLファイルのことです
> 2. プログラム中にある、「Jcode::convert(なんちゃら, 'sjis')」という部分の 'sjis' を 'utf8' に変更
■admin.cgi
555~556行目、sjis → utf8 に変換
# コード変換
Jcode::convert(\$q_item, 'sjis');
↓
Jcode::convert(\$q_item, 'utf8');
■order.cgi
560~561行目、sjis → utf8 に変換
# コード変換
Jcode::convert(\$mbody1, 'jis', 'sjis');
Jcode::convert(\$mbody2, 'jis', 'sjis');
↓
Jcode::convert(\$mbody1, 'jis', 'utf8');
Jcode::convert(\$mbody2, 'jis', 'utf8');
687~688行目、sjis → utf8 に変換
# コード変換
Jcode::convert(\$q{$key}, 'sjis');
↓
# コード変換
Jcode::convert(\$q{$key}, 'utf8');
> 3. プログラム中にある、'shift_jis' を 'UTF-8' に変更。
■admin.cgi
613行目、shift_jis → UTF-8
print $q->header(-charset => 'shift_jis');
↓
print $q->header(-charset => 'UTF-8');
617行目、shift_jis → UTF-8
↓
■mart.cgi
117行目、shift_jis → UTF-8
print $q->header(-charset => 'shift_jis', -cookie => $cookie);
↓
print $q->header(-charset => 'UTF-8', -cookie => $cookie);
■order.cgi
132行目、shift_jis → UTF-8
print $q->header(-charset => 'shift_jis');
↓
print $q->header(-charset => 'UTF-8');
301行目、shift_jis → UTF-8
print $q->header(-charset => 'shift_jis', -cookie => $cookie);
↓
print $q->header(-charset => 'UTF-8', -cookie => $cookie);
621行目、shift_jis → UTF-8
print $q->header(-charset => 'shift_jis', -cookie => $cookie);
↓
print $q->header(-charset => 'UTF-8', -cookie => $cookie);
■check.cgi
20行目、shift_jis → UTF-8
↓
2011/06/23 15:11:54