質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.23%

サイトを文字化けを解決したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,177

mokopi

score 18

プログラミング初心者です。
ほとんど書いたことがありません。
ですのでネットで調べながら質問しています。

前提・実現したいこと

サイトを文字化けせずに表示したい

●資料
・問題のサイトはこちら
・問題のファイルはこちら

状況

テンプレートをダウンロード・サーバーにアップロードすると、データベース系のサイトができる。というサービスを発見

ダウンロード、アップロード

文字化けする

###質問

「どの部分を、どのように治せば」文字化けが治るのか教えてください。
※phpファイル、CSSファイルどちらが原因かもわからない状況です。

該当のソースコード

ここにご自身が実行したソースコードを書いてください

試したこと

課題に対してアプローチしたことを記載してください

・phpファイルの文字コードをutf-8に。CSSファイルの文字コードをshift-jisにして試したが、解決しない。

補足情報(言語/FW/ツール等のバージョンなど)

ーーーーーー
アップロードし、初めはこのエラーが出ていた
Deprecated: Function ereg() is deprecated in ~

しかし、eregの部分を

if (preg_match("/^\r\n$/", $line))
$flg = 1;

と書き換えることで解決した

ーーーーーーー
上のeregエラーを解決する前から、すでに文字化けであった。

つまり初めは、eregエラー & 文字化け。 今は文字化けのみ。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

ウェブアプリが Shift-JIS なのに、レスポンスヘッダで文字コードが UTF-8 になっているために文字化けしているようです。

HTTP/1.1 200 OK
Date: Sun, 23 Apr 2017 03:33:43 GMT
Server: Apache
X-Powered-By: PHP/5.6.25
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

今の時代であれば UTF-8 にするのが無難です。利用しているサービスの設定を見直してください。 → Q&A|DB STREET


諸事情でどうしてもこのまま Shift-JIS でサイトを作りたいのであれば、detail.php, index.php, inquiry.php の3つのファイルを以下のように変更します(★の部分)

ただしセキュリティなどの問題が起きやすいためおすすめしません。できる限り UTF-8 にすることを検討してください。

<?php
$param = 'REEwNzU1MiQkJGRnNDdCaTgzSlRpWiQkJGh0dHA6Ly9kb2xsLWNvbGxlY3Rpb24uYmFieW1pbGsuanAvbG9nLw==';
$charset = 'sjis'; //★ 値を sjis に変更
$gflg=false;
$to_file = 'inquiry.php';

header("Content-type: text/html; charset=Shift_JIS"); //★ 行を追加
include ("connect.inc");
?>

※特定の商用サービスで生じた問題は、そこのサポートに問い合わせるようにしましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/23 14:25

    「サービスの設定変更」で解決できました。
    ありがとうございます。
    レスポンスヘッダなどの単語にくわえ、基本的な「Q&Aにもしっかり目を通す」ということを覚えました。

    キャンセル

  • 2017/04/23 14:31

    解決したようで良かったです。

    しかしながら、今回公開したコードにサービスの認証キーっぽいもの(REEwNzU1...のところ)が含まれてしまっていますが大丈夫ですか?

    もしこれが認証キーであるならば、これを見た他者があなたのアプリケーションを乗っ取ることができてしまいます。できれば一度アプリケーション または アカウント を作り直したほうが安全です。検討してみてください。

    キャンセル

  • 2017/04/23 16:19 編集

    もとのソースは見てないですが、miyahan さんの回答に使われている単語から、これ、問い合わせフォームじゃないですかね?
    $charset が何用途なのか、ちゃんと調べたほうがイイと思います。

    キャンセル

0

connect.incでは「sjis」となっておりますので、index.php内の「shift-jis」をsjisに変更してみてはどうでしょうか?

// connect.inc
function chg_charset($charset, $target)
{
    switch ($charset)
    {
        case    "sjis":
                return mb_convert_encoding($target, "utf-8", "sjis");
                break;
        case    "euc-jp":
                return mb_convert_encoding($target, "utf-8", "euc-jp");
                break;
        default:
                return $target;
                break;
    }
}
// index.php
<?php
$param = 'REEwNzU1MiQkJGRnNDdCaTgzSlRpWiQkJGh0dHA6Ly9kb2xsLWNvbGxlY3Rpb24uYmFieW1pbGsuanAvbG9nLw==';
$charset = 'shift-jis';//★ここをsjisに変更してみる
$gflg=false;
$to_file = 'index.php';


include ("connect.inc");
?>

あとは、Dropboxにおいてあるファイルにはページの実態がないように見受けられます。実際のHTMLソースがDB内に格納されているのであれば、DBの文字コードを確認してみると良いと思います。MySQLとかで文字コードがlatin1になってて日本語が文字化けすることがたまにあります(特にAmazonRDSとか)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/23 14:26

    sjisでは解決できませんでしたが、MySQL~の部分など、勉強になりました。本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる