• 締切済み

UTF-8への変更

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <link rel="stylesheet" href="style.css" type="text/css"> <BASE target="_top"> </head> <body> <div align=center> <? /*送信ボタンが押されたとき */ if ($_POST{action} == "sendmail") { $ng = 0; /* 入力のチェック */ if (!$_POST{name}) { print("<BR>氏名が入力されていません。<BR>\n"); $ng++; } if (!$_POST{mail}) { print("<BR>メールアドレスが入力されていません。<BR>\n"); $ng++; } if (!$_POST{tel}) { print("<BR>電話番号が入力されていません。<BR>\n"); $ng++; } if (!$_POST{comment}) { print("<BR>お問い合わせ内容が入力されていません。<BR>\n"); $ng++; } if ($ng) { print ("<BR>お問い合わせに失敗しました。<BR>\n"); print ('<input type="button" value="前の画面に戻る" onClick="JavaScript:history.back(-1);">'); print ("</body></html>\n"); exit; } $currentdate = date("Y/m/d H:i"); $ordernum = date("Ymd"); $message = "ホームページからお問い合わせがありました。\n\n"; $message .= "■ 送信者は以下の通りです。\n"; $message .= "--------------------------------------------------\n"; $message .= "送信日時 :".$currentdate."\n"; $message .= "氏名:".$_POST{name}."\n"; $message .= "メールアドレス:".$_POST{mail}."\n"; $message .= "電話番号:".$_POST{tel}."\n"; $message .= "お問い合わせ内容:".$_POST{comment}."\n"; $message .= "--------------------------------------------------\n\n"; mb_language("ja"); $from = mb_convert_kana($_POST{mail},"KVrna"); $to = "oooo@xxxxxxxx.xxxx"; $subject = "ホームページからお問い合わせがありました"; $subject = '=?ISO-2022-JP?B?' . base64_encode(mb_convert_encoding($subject, 'ISO-2022-JP', 'AUTO')) . '?='; $message = stripslashes($message); mail($to,$subject,$message,"From:$from"); print ("<BR><BR>\n"); print ("お問い合わせを受け付けました。<BR>近日中にご返信させていただきます。<BR><BR>\n"); print ('<A HREF="index.html"> >> トップページに戻る</A> <BR>'); print ("</body></html>\n"); exit; } ?> </div> </body> </html> ----------------------------------------------------------------------------- <form action="form2.php" method="post"> <input type="hidden" name="action" value="sendmail"> <table cellspacing="1" cellpadding="5" width="660" bgcolor="black" align="center"> <tr> <td bgcolor="#efffff" width="140"><font color=black>【御名前】</font></td> <td bgcolor="#ffffff"><input type="text" name="name" size="30" value="" maxlength="30"></td> </tr> <tr> <td bgcolor="#efffff"><font color=black>【メールアドレス】</font></td> <td bgcolor="#ffffff"><input type="text" name="mail" size="30" value="" maxlength="40"></td> </tr> <tr> <td bgcolor="#efffff"><font color=black>【地域】</font></td> <td bgcolor="#ffffff"><input type="text" name="address" size="30" value="" maxlength="40"></td> </tr> <tr> <td bgcolor="#efffff"><font color=black>【御問合せ内容】</font></td> <td bgcolor="#ffffff"><textarea name="comment" rows="7" cols="35"></textarea></td> </tr> </table><br> <center> <input type="submit" name="sub" value="送信"> </center> </form> -------------------------------------------------------------------- 上のような「charset=Shift_JIS」対応のPHPファイルを「charset=UTF-8」に変更するにはどうしたら良いでしょうか? また、次のHTMLファイルは、このままの状態で「charset=UTF-8」のサイトに埋め込むことができますか? もし、こちらも変更箇所等があれば御指導を御願い致します。 ※ファイルのコピーをそのままペーストしてしまったので、長くなり申し訳ありません。

みんなの回答

回答No.4

『<html>』→『<html lang="ja">』 『<?』→『<?php』 > <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> meta http-equivはサーバへのヒントですがその項目見て実際にhttpヘッダを送っているサーバは見た事がありませんので、なんらかの形でサーバがそのヘッダを送るように調整してやる必要があります。 ※ phpで行なう場合には最初に『header("Content-Type: text/html; charset=Shift_JIS");』を入れる。apacheやphpの設定で行なっても良いです。 ※ 元の環境が設定せず問題なく動いてるなら、Shift_JISに設定されているかと思いますので、UTF-8に変える場合には調整が必要だと思います。 php.intで調整する場合は下記最後の行 ; As of 4.0b4, PHP always outputs a character encoding by default in ; the Content-type: header. To disable sending of the charset, simply ; set it to be empty. ; ; PHP's built-in default is text/html default_mimetype = "text/html" ;default_charset = "iso-8859-1" default_charset = "UTF-8" httpd.confで行なう方法は複数あります。 http://www.nina.jp/server/redhat/httpd/httpd_conf.html それと、良く誤解した解説をみますがdefault設定しないのは(httpヘッダでは単純に text/htmlを送る)デフォルト値のiso-8859-1(西ヨーロッパで使われている文字集合)を送ったのと同じになります。default設定しないとhttp-equivが使われるというのは正しくないので注意しましょう。

bb1234
質問者

お礼

ありがとうございました。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

UTF-8/UTF-8Nと区別されている場合は、 UTF-8がBOM(Byte Order Mark)有り、UTF-8NがBOM無しです。 UTF-8はBOMをつけないのが一般的で、BOMをつけるのはトラブルの元になりかねないので、 BOMはつけない方が良いと思います。 Windowsのメモ帳はUTF-8保存したときにBOMをつけてしまうので、 BOM無しUTF-8を前提としたツールを通したときに 結果がおかしくなるといったトラブルをたまに見ますね。 メモ帳は使わない方がいいです。

bb1234
質問者

お礼

ということは、UTF-8Nで保存したほうが良いだろうということなのですね!? 詳しいご説明、ありがとうございます。

noname#252332
noname#252332
回答No.2

私は秀丸とwindowsのおまけのメモ帳しか知りませんが保存するコードは保存する際に指定します。UTF-8Nは先頭にUTF-8標識コードをつけないという意味だと思いますがhtmlではどっちでもいいんじゃないですか。CR(0x0d)はタイプライターのキャリッジ(印字ヘッド)が左端へリターンする、LF(0x0a)はラインフィードつまり行送り、とまあ原始的な意味はこうですが、どちらも行末を示す制御コードと思えばいいです。ファイルでは行末にCR+FLが要求される場合と、LFとCRをそれぞれ改行と見なすのでどちらか片方でなければならない場合があります。htmlは<br>だから気にならないですね。

bb1234
質問者

お礼

そんな意味があったのですね! ともかく、この度はありがとうございました。

noname#252332
noname#252332
回答No.1

charset=UTF-8 に変更してエディタでUTF8で保存してやってみればいいんじゃないですか。

bb1234
質問者

お礼

ありがとうございました。

bb1234
質問者

補足

ありがとうございます。エディタはterapadを使っていますが、具体的にはどうしたら良いでしょうか? terapadツールバーの「ファイル」から「文字コード指定再読込」から選択?、若しくは「文字/改行コード指定保存」から選択するのですか? また、UTF-8の後にNがあるものと、Nがないものの違いは何でしょうか? また、「CR」と「LF」とは何でしょうか? 補足ですみませんが、宜しくお願いします。