PHPで文字化けが起こってしまいます。


HTMLでは普通に表示されるのですが、それをPHPファイルに変換したとたん文字化けしてしまいます。

サイトを決行見て対策したのですがうまく出来ませんでした。

コメント欄にコードを書くのでわかる方おりましたらご回答お願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2023/09/06 21:15:05

回答0件)

回答はまだありません

  • id:aiomock
    HTMLのコードです。


    <html>
    <body>
    <form action="index.php" method="post">

    名前 <input type="text" name="yahoo" size="20" ><br><br>
    ご意見 <textarea name="iken" rows="4" cols="27"></textarea><br><br>
    <input type="submit" name="submit" value="送信">
    </body></html>

  • id:aiomock
    PHPのコードです。

    <html>
    <head><meta charset="UTF-8"></head>
    <body>
    <form action="index.php" method="post">

    名前 <input type="text" name="yahoo" size="20" ><br><br>
    ご意見 <textarea name="iken" rows="4" cols="27"></textarea><br><br>
    <input type="submit" name="submit" value="送信">
    </body></html>


  • id:aiomock
    このサイトを参考に対策してみましたが無理でした。

    https://jp-seemore.com/web/6567/
  • id:psne
    PHP側にはcharsetが指定してありますが、それを取り除くとどうなりますか?
  • id:deep_one
    そもそも「PHPのコード」に一つもPHPのコードが入っていないのだが、単にファイル拡張子をPHPに変えた段階で化けるということだろうか。


    php.iniの文字コード設定とかどうなってるのか確認しているだろうか。こういうの。

    https://www.javadrive.jp/php/install/index5.html
  • id:aiomock
    ぽけっとしすてむ さん ご回答ありがとうございます。

    charsetの指定取り外してみましたが、文字化けしました。
  • id:aiomock
    deep_one さん ご回答ありがとうございます。

    php.iniの文字コード設定のページ理解できませんでした。

    HTMLのコード、HTMLから拡張子をPHPに変えてみましたが文字化けします。
  • id:aiomock
    Tera Pad を使用しているのですが。

    文字コード指定再読み込み で UTF8 を選択したら無事に文字化けを回避することが出来ました。
  • id:aiomock

    <?php


    if (isset($_POST["submit"])){



    $db = mysqli_connect("mysql659.db.sakura.ne.jp","stmarks","7ga7nhr2","stmarks_kanri");

    $sql = "INSERT INTO MAILFORM (NAMAE, IKEN) VALUES ('" . $_POST["namae"] . "', '" . $_POST["iken"] . "')";


    $ret = mysqli_query($db, $sql);

    mysqli_close($db);

    }


    ?>


    <html>
    <head></head>
    <body>
    <form action="index.php" method="post">

    名前 <input type="text" name="namae" size="20" ><br><br>
    ご意見 <textarea name="iken" rows="4" cols="27"></textarea><br><br>
    <input type="submit" name="submit" value="送信">
    </body></html>

  • id:aiomock
    掲示板のソースもうまく出来ました。 index.php


    <?php
    // 投稿ボタンが押された場合
    if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["btn1"]) === true) {
    if (!empty($_POST["personal_name"]) && !empty($_POST["contents"])) {
    // 投稿の書き込み
    writeData();
    }
    header("Location:./index.php#toukou");
    }
    ?>

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <title>PHPで掲示板アプリ</title>
    <style>
    html {
    /** 全体の背景色 */
    background-color: #C3D9F1;
    }
    h1 {
    /** タイトルの文字色 */
    color: #000000;
    text-align: center;
    }
    .main {
    /** 掲示板枠の背景色 */
    background-color: #F4ECEA;
    /** 掲示板枠の幅 */
    width: 600px;
    border: 1px black solid;
    margin-left: auto;
    margin-right: auto;
    padding: 10px 60px;
    }
    .pname {
    /** 投稿者の名前の文字色 */
    color: #56B247;
    font-weight: bold;
    }
    </style>
    </head>
    <body>

    <h1 class="main_title">PHPで掲示板アプリ</h1>
    >
    <hr>

    <div class="main">

    <?php
    // 投稿の読み込み
    readData();
    ?>

    <form method="POST" id="toukou" name="toukou" action="<?php print($_SERVER['PHP_SELF']) ?>">
    <p><input type="submit" name="btn1" value="書き込む">
    名前:<input type="text" name="personal_name"></p>
    <p><textarea name="contents" rows="8" cols="80"></textarea></p>
    </form>
    </div>
    </body>
    </html>

    <?php

    // 投稿読み込み処理
    function readData() {
    $keijban_file = 'keijiban.txt';

    $fp = fopen($keijban_file, 'rb');

    if ($fp) {
    if (flock($fp, LOCK_SH)) {
    while (!feof($fp)) {
    $buffer = fgets($fp);
    print($buffer);
    }

    flock($fp, LOCK_UN);
    } else {
    print('ファイルロックに失敗しました');
    }
    }

    fclose($fp);
    }

    // 投稿書き込み処理
    function writeData() {
    // 各値を取得
    $personal_name = $_POST['personal_name'];
    $contents = $_POST['contents'];
    $contents = nl2br($contents);

    $data = '<p>名前:<span class="pname">' . $personal_name . '</span>:' . date("Y/n/j") . '</p>';
    $data = $data . "<p>" . $contents . "</p>\r\n";
    $data = $data . "<hr>\r\n";

    $keijban_file = 'keijiban.txt';

    $fp = fopen($keijban_file, 'ab');

    if ($fp) {
    if (flock($fp, LOCK_EX)) {
    if (fwrite($fp, $data) === FALSE) {
    print('ファイル書き込みに失敗しました');
    }

    flock($fp, LOCK_UN);
    } else {
    print('ファイルロックに失敗しました');
    }
    }

    fclose($fp);
    }
    ?>
  • id:aiomock
    掲示板txtファイル keijiban.txt

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません