ホームページでsformmail2(●)というPHPのメールフォームを使っているのですが、一部分だけ、どうしても文字化けをしてしまいます。
使っているサーバーはさくらインターネットのスタンダードプラン(●)です。
sformmail2のsformmail.phpの中に、以下の記述があり、こちらが文字化けを起こします。(PHP内69〜97行目)
PHP
1// submit表示項目 2function printSubmit($error) 3{ 4 5 // 送信/戻るボタン表示設定 6 $button_text = array( 7 'send' =>"送 信" 8 , 'back' =>"戻 る" 9 ); 10 11 if ($error == 1) { 12 // エラーがある場合のHTML出力 13 $submit = <<< EOD 14<p class="ERR">必須項目の入力に不足があります。</p> 15<input type="button" name="back" id="back" value="{$button_text['back']}" onclick="history.back()" /> 16EOD; 17 } else { 18 // 項目が正しい場合のHTML出力 19 $submit = <<< EOD 20<p>入力が正しければ、送信ボタンを押してください。</p> 21<input type="hidden" name="mode" id="mode" value="SEND" /> 22<input type="submit" name="submit" id="submit" value="{$button_text["send"]}" /> 23<input type="button" name="back" id="back" value="{$button_text["back"]}" onclick="history.back()" /> 24EOD; 25 } 26 return $submit; 27}
本来ならば、送信ボタンと戻るのボタンが出てくるといった記述のはずが、以下のように文字化けを起こしてしまいました。
HTML
1<h4> 2<p>?ュ????罩c???????違????篆<???帥?潟???若?????????????</p> 3<input type="hidden" name="mode" id="mode" value="SEND" /> 4<input type="submit" name="submit" id="submit" value="????篆? /> 5<input type="button" name="back" id="back" value="?祉????" onclick="history.back()" /> 6</h4>
$button_textの中に収納した「送 信」と「戻 る」が文字化けを起こし、HTMLタグに異常をもたらしてるのだと思って、文字コードを確認したところ「ASCII」だということがわかり、HTMLファイルの文字コードである「UTF-8」に合わせようと思い、以下のように変えても無駄でした。
<修正↓>
PHP
1$button_text = array( 2 'send' => mb_convert_encoding("送 信", "utf-8","ASCII") 3 , 'back' => mb_detect_encoding($button_text["send"]) 4 );
HTML
1 2 <h4> 3 <p>?ュ????罩c???????違????篆<???帥?潟???若?????????????</p> 4<input type="hidden" name="mode" id="mode" value="SEND" /> 5<input type="submit" name="submit" id="submit" value="辿??達??辰多臓" /> 6<input type="button" name="back" id="back" value="ASCII" onclick="history.back()" /> 7</h4>
色々と調べたのですが、自分では限界でした。
PHPの初心者のため、わかっていないことが多いので、足りない情報はすぐに出そうと思っています。なるべく早い返信をこころがけますので、よろしくお願いします。
追記
どのようなページか、素人ながら説明します。
sformmail.phpにアクセスすると、sfm_form.htmlのフォームを読み込み、そこに入力した後、送信ボタンを押すと、入力された情報がsfm_confirm.htmlに表示され、問題がなければ、送信ボタンが表示される、といった次第です。この二回目の送信ボタンが文字化けを起こします。
ちなみにsfm_confirm.html側の記述を↓のように変えても結果は全く変わりませんでした。
html
1<h4> 2<!--修正前:<?php echo $sfm_submit; ?> <?php $this->crCheck(); ?>--> 3<?php echo mb_convert_encoding($sfm_submit, "utf-8", "auto"); ?> <?php $this->crCheck(); ?> 4</h4>

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。