2011年4月11日

[PHP-users 35535] HTTPエコーする場合に不明な文字(?)が付く現象への対策

phpバージョン 5.2.4

(phpinfoから抜粋)
mbstring.detect_order no value
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input pass
mbstring.http_output UTF-8

mbstring.internal_encoding ISO-8859-1
mbstring.language neutral
mbstring.strict_detection Off
mbstring.substitute_character

「現象」
(1) phpからHTMLを出力したとき、目視で画面上部にすきまができたように見える。

(2) このとき、ブラウザで「ソースを出力」しそれをエディタに出力すると
本来なら、<!DOCTYPE >ではじまるはずだが
?????????<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
と、タグの前に不明な文字(?)があります。このときのエディタのエンコードはUTF-8 LFCR。

「調査事項」
(1) phpの関数で、出力する文字列のうち一番最初の文字を調べたところ「<」でした。

(2) 現象(2)のファイルをバイナリエディタでみた場合、ファイルの先頭部分は
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00000000|ef bb bf ef bb bf ef bb bf ef bb bf ef bb bf ef | ・ソ・ソ・ソ・ソ・ソ・
00000010|bb bf ef bb bf ef bb bf ef bb bf ef bb bf 3c 21 | ソ・ソ・ソ・ソ・ソ<!
--------|------------------------------------------------|-------------------
となっています。これが何を現わしているのかは不明。

(3) phpで出力しているHTMLタグを含んだ同じ文字列を、phpを使用せず*.htmlとしてwebサーバに
置きブラウズすると現象(1),(2)は発生しません。

「希望する結果」
<!DOCTYPE >
<html>
<head>
</head>
<body>
</body>
</html>
と、一般的なタグのみを出力したい。
タグの前に不明ななにか(文字?制御文字?)を出力したくない。

「予想」
現象(1)の原因は、タグの前にこのなにかが出力されていることが原因ではないか?

「疑問、不明箇所、質問」
・まずは現象(1)の回避をしたいがどうしたらいいか?
・現象(2)にある不明文字はなにか?

現状の問題について、環境など不足情報がありましたらご指摘ください。

解決方法をご存じのかた、よろしくお願いいたします。

山下


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2011年4月11日 16:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103090
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。