掲示板トップ > 記事閲覧
UTF-8とinclude
日時: 2007/12/31 00:54:02
名前: oyonejp

UTF-8でサイトを作成しているのですが、うまくいきません。
さんざん調べて以下のtest.phpとtest2.phpを作成しましたが、思ったように表示されません。「ソースを表示」としてみると、スクリプトと埋めた頭の場所に「?」が入ってしまっていて、空文字で改行されたような表示になってしまいます。

■test.php

<?PHP
mb_internal_encoding("UTF-8");
mb_language("uni");
mb_http_input("auto");
mb_http_output("utf-8");
ob_start('mb_output_handler');
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<?php include_once("test2.php");?>
</body>
</html>

■test2.php

<?PHP
echo "<p>てすと</p>";
?>

■ソースを表示

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
?<p>てすと</p></body>
</html>

文字コードの保存も、ちゃんとUTF-8になっています。
ブラウザはWinIE6とFirefoxの両方で確認しました。
ひらがなで「てすと」とも表示されるので、問題なさげなのですが…なぜ「?」が…。
自宅のWinXPのIIS5.1・php5と ロリポップのApache1.3・php4.4.6で試して、いずれも結果は同じでした。助けてください・・・よろしくお願いします。
メンテ
Page: 1 |
UTF-8とinclude ( No.1 )
日時: 2007/12/31 15:15:41
名前: oyonejp< >

補足します。
FireFoxを最新版にアップグレードしたら、?が出なくなりました。しかしIE6では?が出続けます。
IEで?が出なくなるようにしたいです。
ちなみに「include」を「require」にしても、同じ結果でした。
よろしくお願いします。
メンテ
Re: UTF-8とinclude ( No.2 )
日時: 2008/01/01 15:29:16
名前: lines

新年明けましておめでとうございますm(__)m
本年もよろしくお願いいたします。

さて本題ですが、上記のソースコードをコピペして動作確認を行ってみました。
ただいま実家なのでロリサーバと自宅の二台でしか動作検証出来てません。ゴメンナサイ。

動作検証環境はononejpさんとかなり違いますごめんなさい。XAMPP1.6.4です。
保存形式はUTF-8(BOM有)、関係あるか分からないけど、改行コードCRLF。
上記で行った所、ononejp様の環境で見られた同様の症状は発生しませんでした。
ロリサーバにアップロードして検証してみましたが、こちらも同様の症状は発生しませんでした。
もう一度見直してみてはいかがでしょうか?
ちなみに普通のソースコードと違う点で気付いたのは私だと<HTML>タグが抜けてるな〜くらいです(滝汗)

http://onnhime.egoism.jp/lolipop/test.php
こちらを見た時、同様の症状は発生していますか?

私のPCで見た時、?マークは出ていないので、もしononejp様のPCで?マークが出ていた場合、OSの環境依存(て言い方でいいのかしら)が考えられます。

私の範囲だと答えられるのはこれくらいです・・・。
メンテ
Re: UTF-8とinclude ( No.3 )
日時: 2008/01/01 15:33:01
名前: oyonejp< >

自己解決しました。ありがとうございました。

http://onnhime.egoism.jp/lolipop/test.php
を確認したところ、同じ症状になっていました。

全ファイルの保存形式をUTF-8N(BOMナシ)にしたところ、
問題なく表示されるようになりました。

BOM付のUTF-8ファイルをつっこんだ場所で、ブラウザが
BOMをうけとって「なんだこりゃ?」って「?」マークを
吐いたんでしょうか。

ブラウザによって、いい感じに整形してくれたりするの
でしょうか・・・?
何か釈然としませんが、UTF-8Nで正しい事がわかりました。

正月早々、本当にありがとうございました。
メンテ
Re: UTF-8とinclude ( No.4 )
日時: 2008/01/01 15:40:19
名前: lines

良かったです>w<
とりあえず動けばOKという事で…、新年ですし…、深い事は考えないようにしましょう^−^
良い一年になりますように^^
メンテ
Re: UTF-8とinclude ( No.5 )
日時: 2008/01/02 19:45:05
名前: shimix◆HiB7vr7k6n2< >
参照: http://forum.lolipop.jp

#帰省中なので取り急ぎ・・(汗

 UTF-8のBOMがあると、phpの開始タグ(<?php)より前に出力があると判断されて
(空白や改行があるのと同様)php側が先にヘッダを返してしまいます。なので以降に
httpヘッダやCookie関係の設定をするとalready sentになったります。

 当然、出力のバッファリングなども困ったことになります。

 ブラウザが(BOMを)受け取るだけならいいのですが、php側が「すでにHTTPヘッ
ダを出力している」状態になってしまうので要注意です。


 UTF-8Nなどといった表記のエディタは間違って(BOM付きUTF-8で)保存してしま
う可能性が高いですね(そもそもメモ帳がそういう仕様だし・・)。

 ∴ 私はsakuraを愛用してます(苦笑
メンテ

Page: 1 |

題名*(必須) スレッドをトップへソート
名前*(必須)
E-Mail
URL
コメント中には上記URLと同じURLを書き込まないで下さい
パスワード (記事の修正・削除時に使用)
コメント*(必須)

   クッキー保存