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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

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

Q&A

0回答

543閲覧

ガラパゴス携帯対応のwebサイトのエンコードエラーについて

mmssmm_m

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

XHTML

XHTMLは、eXtensible HyperText Markup Languageの略であり、SGMLベースであるHTMLとは違って、有効なXMLドキュメントにもなるHTMLアプリケーションです。XMLベースのツールを用いて生成されるHTMLページのためによく使われるマークアップ言語です。

PHP

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

1グッド

1クリップ

投稿2024/05/31 08:25

編集2024/06/03 23:10

実現したいこと

エンコードエラーを解消したい

発生している問題・分からないこと

現在、さくらのサーバにアップロードしているサイトを確認すると、ブラウザにエラーメッセージが表示され、サイトが正しく表示されない問題が発生しております。

エラーメッセージ

error

1This page contains the following errors: 2error on line 1 at column 1: Encoding error 3Below is a rendering of the page up to the first error.

該当のソースコード

index.php

1<?php 2//共通ファイルの読み込み(相対パス) 3include_once './include/commons.php'; 4header('Content-Type: application/xhtml+xml'); 5echo '<?xml version="1.0" encoding="Shift_JIS"?>'; 6?> 7<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 8<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" dir="ltr"> 9<head> 10<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> 11<meta name="description" content="ここにdescriptionが入ります" /> 12<meta name="keywords" content="ここにkeywordsが入ります " /> 13<meta http-equiv="Pragma" content="no-cache" /> 14<meta http-equiv="Cache-Control" content="no-cache" /> 15<title>ここにタイトルが入ります</title> 16…以下略
AddType application/xhtml+xml .php

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

該当のindex.phpはShift-JIS形式で保存されています。

補足

エンコードエラーとなっているのはテスト環境用でのサーバのみとなり、本番環境用のサーバは別会社となるのですがそちらでは同じデータでも問題なく表示されています。このあたりも理由がわからず困っています。。。

さくらインターネットさんに問い合わせをしましたが、おそらくサーバの問題では無いのか「ウェブサイトの管理に関しては回答できかねる」ということでした。

2024/06/04 追記
curlコマンドで調べてみますと、
Content-Type: text/html; charset=iso-8859-1
とHTTPレスポンスに表示されているためShiftJISになっていないことが判明しております。

Server: nginx 
とありましたので、nginxの場合のエンコード設定を調べているところです。

juner👍を押しています

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

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

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

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

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

dodox86

2024/05/31 10:57

もしかしたら以下のxml宣言からhtmlの部分まで、HTTPレスポンスではUTF-8で出力されていませんか?(本来ならShift_JISで出力されなければならない) echo '<?xml version="1.0" encoding="Shift_JIS"?>'; PHPは使っていませんが、'Content-Type: application/xhtml+xml'以降、同様の内容をCGIで出力するようにして試したところMicrosoft Edgeで同じエラーが再現しました。 ブラウザだけでなくcurlコマンドなどでHTTPレスポンスの内容をすべて取得するようにして分析するとより原因が分かると思います。
mmssmm_m

2024/06/02 13:00

当方初学者でしてcurlコマンドなど初耳でしたが、調べてみますと Content-Type: text/html; charset=iso-8859-1 とHTTPレスポンスに表示されているためShiftJISになっていないことが判明いたしました。 また、Server: nginx とあり、 .htaccessにて AddDefaultCharset Shift_JIS などと記述しても効かないらしいことがなんとなく理解できました。 引き続き、nginxの場合のエンコード設定について調査いたします。。。 コメント誠にありがとうございます。
dodox86

2024/06/02 18:36

> 当方初学者でしてcurlコマンドなど初耳でしたが、調べてみますと > Content-Type: text/html; charset=iso-8859-1 > とHTTPレスポンスに表示されているためShiftJISになっていないことが判明いたしました。 こういった情報はこのコメント欄ではなく、質問本文の方に追記、修正のかたちで示しましょう。 PHPに限らず最近は過去のプロダクトの更改案件の話をよく見聞きしますが、それに照らしてこちらの質問のような情報は、割と貴重な情報になると少なくとも個人的には思います。 尚、phpのコード中で > header('Content-Type: application/xhtml+xml'); と書いているのにそのページの実際のHTTPレスポンスでは > Content-Type: text/html; charset=iso-8859-1 と返っているのであれば、PHPの設定とnginxの設定で不整合がありそうです。 本番環境のサーバーとテスト環境のサーバーの違い(WEBサーバーやPHPのバージョン、設定の違い等)を良く比べてみると、分ってくることもあると思います。
mmssmm_m

2024/06/03 23:11

質問内容に追記をいたしました。 色々とご教授いただきまして、ありがとうございます!
tezcello

2024/06/04 02:13

> また、Server: nginx とあり、 > .htaccessにて AddDefaultCharset Shift_JIS などと記述しても効かない 知恵袋でも回答しましたが、サーバを含めた環境が異なるのを見落としていたという事ですね。 普通のnginxは .htaccessを見たりしません(.htaccessは Apache用の設定ファイル)ので、そのサーバで許されている設定方法を調べる事が必要です。 VPSなら勝手に変更すれば良いですが、共用サーバでは出来る事は限られます。
dodox86

2024/06/04 02:35

あら、本件、Yahoo知恵袋とのマルチポストでしたか。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12298852062 マルチポストはteratailでは非推奨事項です。 [他のサービスにも質問投稿をしたい(してしまった)] https://teratail.com/help#posted-otherservice teratailに限らずマルチポストはQ&Aサイトでは一般的にマナー違反です。 少なくとも個人的に興味を覚えた問題だったので、残念です。まぁ、知らなかった・困ってのマルチポストだったのかもしれないので特に追及はしませんが、以降、私はコメントも控えます。
mmssmm_m

2024/06/04 02:41

この度teratailの利用はこれが初めてでして、他サイトでの同じ質問がマルチポストというものに該当する旨存じ上げておりませんでした。 つきましては知恵袋での質問は、ご回答いただいた方に大変申し訳ございませんが、取り消しさせていただきます。 この度は私のマナー違反にお詫び申し上げますと共に、ご指摘いただきまして感謝いたします。
tezcello

2024/06/04 05:57

ガラケーサイトの作り方について、結構ガッツリ書いたのに削除されてしまうのはガックリですね…
tezcello

2024/06/04 15:21

> さくらインターネットのnginxは.htaccess使えます そうなのかもしれませんが >.htaccessにて AddDefaultCharset Shift_JIS などと記述しても効かない という報告もあるので、全ての項目が反映されないのかもしれませんね。 (残念ながらさくらさんのは建前とは明らかに異なる挙動があったのを経験しているので、『個人的には』100%を信用していません…かなり時間が経っているので改善されているとは思いますが) また、最近のPHPは default_charset が UTF-8ですので、それ以外のエンコードを使う為には明示的にheader()で知らせる必要があります。 PHPは着実にアップデートを続けていて、デフォルト値が変化している場合もありますから、過去のコードのまま新しい環境で実行すると(行儀の悪い=デフォルト値に依存するような)アプリケーションによっては期待した(=過去のモノと同じ動作)にはならない可能性が高いです。 __だからといって過去のバージョンを無理やり使うのは悪手だとおもいます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問