CGI-BBS > SO−HO > ショッピングバスケット > v6.02の注文書の写しが文字化けします 原因は何!?


カレッヂ
カレッヂ


質問者 SAYOKO  投稿日 7/19(木) 16:08:06
受信した注文書の写しは、info.datの内容は無事ですけど、それ以外の部分が化けます。
setup.cgiではドル表示用の設定をしています。
postage2.datの内容を書き換えて設置していますが、それが原因なのでしょうか!?
設定の際に書き入れる文字などですが、CGI入門書を参考に特殊文字等には気を付けて
書き入れましたが……。
アメリカと日本の共同経営でネットショッピングの準備をしているので、
名前や法規の部分にアメリカの住所を書き入れたりしますが、日本語と半角の英数文字が
混ざった記述が原因なのでしょうか!?
今朝からズッと心当たりのある部分を訂正して、確認と修正を何度も繰り返していますが、
なかなか解決しません。

注文書の写しで文字化けが見られ、その後に解決をされた方がいらっしゃいましたら、
是非に解決の方法をお教え下さい。
それから、記述の際に気を付けるべき事がございましたら、是非に御指導頂きたいのですが、
宜しくお願い致しまぁ〜す。
質問者 SAYOKO  [削除]  投稿日 7/19(木) 22:27:46
自己解答・その1

このボード内の同じ質問者の「シンガキさん」の投稿を参考にして、
http://www.rescue.ne.jp/cgi/faq4.shtml#FAQ52 にあるヒントを
cart.cgi内の119・436・509・625・953の各行に
print <<"EOF";
"Content-type: text/html; charset=Shift_JIS\n\n";としてみましたが、
肝試しには、少し早いと言うのに相変わらず注文書の写しは化けまくってます(-_-;)。
私の記述に問題があるのでしょうか(-_-;)!?
SOHOでネット・ショップを開店しますが、資金不足で自力でやってますが、
CGIど素人がショッピング・カートを設置する事自体が問題なのでしょうか(*_*)。

どなたか是非に御指導をお待ち申し上げております<(_ _)>。
解答を待ちわびて妖怪ろくろ首になりそう……(^_^;)。
質問者 SAYOKO  [削除]  投稿日 7/21(土) 13:59:27
自己解答その2

なかなか御指導頂けないので、夕べからテキスト片手にcart.cgiを眺めてみました。
CGI無知ながら、何とかプログラムの流れ!?までは理解しました。
表現が間違っているかも知れませんが、
「文字化けの原因は、最初に読み込まれるデーターに合わせて読み込むから……」と
知ったので、注文書の写しの最初に注入される文章の部分(setup.cgiの中の設定)を
空欄にしてみましたが治らず、↑をそのままの状態で、
cart.cgiの中で、注文書の写しを発行すると思われる部分の、
多分ですが、「特定商取引に関する法律による表示」を注入する箇所の
print OUT &jis("--- 特定商取引に関する法律による表\示 ---\n\n");
foreach (@info) { print OUT; }
print OUT "\n";
を抜いてみましたら、注文書の写しの文字化けは回避されました(^_^)v。
が(^^;)、注文書が送信されなくなってしまいました(-_-;)。
と、言う事はinfo.datも文字化けの原因と思うのですが、
「ならば↑のプログラムの記述に文字化けを回避させる記述を追加できないのかなぁ」と
ド素人ながら思い付きましたが、その方法が解りません(-_-;)。
どなたか是非に教えて頂けないでしょうか!?
宜しくお願い申し上げます<(_ _)>。
回答者 しあわせのツボ  [削除]  投稿日 7/22(日) 00:09:50
foreach (@info) { print OUT; }

foreach (@info) { print OUT &jis($_); }
にしてみて下さい。

これに関してはレスキューさんも把握しておられますので、近いうちに何らかのアナウンスがされると思います。
質問者 SAYOKO  [削除]  投稿日 7/23(月) 13:10:38
自己回答 その3 「注文書の写し」の文字化け回避のまとめ

先ずは、しあわせのツボさん、御指導ありがとうございました。
このforeach (@info) { print OUT &jis($_); }で法規の部分が影響する文字化けは
回避できました。本当にありがとうございました。

あと、この注文書の写しは、
setup.cgiの中の「電子メールに付加されるシグネチャ」からも影響を受けるのではと
思いましたので、
cart.cgiからこの部分を記述させる指示のところでjisを指定させました。
これにより、「注文書の写し」の文字化けは今のところ!?完全に回避されました。

参考までに私の環境と修正個所をお知らせして終わります。
cart.cgiの「オーダー処理」の中央あたり
print OUT "$mail\mes|n";をprint OUT &jis("$mail_mes\n");に修正
cart.cgiの「オーダー処理」の後方
foreach (@info){print OUT;}を
foreach (@info) { print OUT &jis($_); }に修正
これは多分不要かも知れませんが念のため書きます。
CGI設置サーバー・interQ 「注文書の写し」の送信先はBiglobe
setup.cgiではドル表示に設定
postage2.datの内容を全面的に書き換えて使用しています。

以上(^_^)v
しあわせのツボさんに心より感謝致します<(_ _)>
回答者 レスキュー  [削除]  投稿日 7/23(月) 22:29:15
連休中出かけておりまして、予定を1日オーバーしていま戻ってきました。しあわせのツボさん
からのメールを受けて取り急ぎ思い当たる点をご案内し、対応をお願いしました。

JIS変換する部分に抜けがあり、それが化けの原因でした。
ご存知の通り、日本語の電子メールはJIS(7ビット)で統一するのが慣例ですが、
なぜか私の使っているメールソフトでは化けなかったため気がつきませんでした。
きっと多少の化けを修正するような機能がついてしまっていたのかもしれません。

>あと、この注文書の写しは、
>setup.cgiの中の「電子メールに付加されるシグネチャ」からも影響を受けるのではと
>思いましたので

これはSJISで設置しないと、他に影響が出ます。そこに書いた内容はJIS変換して
メールされますので大丈夫なはずなのですがどうでしょうか?

返信(回答)する


Web裏技