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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2846閲覧

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

mokopi

総合スコア38

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/04/23 03:08

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

###前提・実現したいこと

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

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

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

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

文字化けする

###質問

「どの部分を、どのように治せば」文字化けが治るのか教えてください。
※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エラー & 文字化け。 今は文字化けのみ。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ウェブアプリが 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

1<?php 2$param = 'REEwNzU1MiQkJGRnNDdCaTgzSlRpWiQkJGh0dHA6Ly9kb2xsLWNvbGxlY3Rpb24uYmFieW1pbGsuanAvbG9nLw=='; 3$charset = 'sjis'; //★ 値を sjis に変更 4$gflg=false; 5$to_file = 'inquiry.php'; 6 7header("Content-type: text/html; charset=Shift_JIS"); //★ 行を追加 8include ("connect.inc"); 9?>

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

投稿2017/04/23 03:51

編集2017/04/23 04:03
miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokopi

2017/04/23 05:25

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

2017/04/23 05:31

解決したようで良かったです。 しかしながら、今回公開したコードにサービスの認証キーっぽいもの(REEwNzU1...のところ)が含まれてしまっていますが大丈夫ですか? もしこれが認証キーであるならば、これを見た他者があなたのアプリケーションを乗っ取ることができてしまいます。できれば一度アプリケーション または アカウント を作り直したほうが安全です。検討してみてください。
退会済みユーザー

退会済みユーザー

2017/04/23 07:21 編集

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

0

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

php

1// connect.inc 2function chg_charset($charset, $target) 3{ 4 switch ($charset) 5 { 6 case "sjis": 7 return mb_convert_encoding($target, "utf-8", "sjis"); 8 break; 9 case "euc-jp": 10 return mb_convert_encoding($target, "utf-8", "euc-jp"); 11 break; 12 default: 13 return $target; 14 break; 15 } 16}

php

1// index.php 2<?php 3$param = 'REEwNzU1MiQkJGRnNDdCaTgzSlRpWiQkJGh0dHA6Ly9kb2xsLWNvbGxlY3Rpb24uYmFieW1pbGsuanAvbG9nLw=='; 4$charset = 'shift-jis';//★ここをsjisに変更してみる 5$gflg=false; 6$to_file = 'index.php'; 7 8 9include ("connect.inc"); 10?>

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

投稿2017/04/23 03:32

scrpgil

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokopi

2017/04/23 05:26

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問