みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【PHP】ファイル読み込みで「見えない文字」が発生する??

PHP初心者です。
不思議な現象を経験したため質問させていただきます。
ファイルから文字列を読むとき、どうしても先頭に「見えない」文字がついてしまいます。見えない文字とは空白ではなく容積ゼロの文字のことで一種の文字化けと思われます。

<PHPプログラム>
<?php
header('Content-Type: text/html; charset=UTF-8');
header('Content-Language: ja');
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
print "ここに発生→";
if($fp = @fopen("file.txt", "r")){
while( !feof($fp) ){
$line = trim(fgets($fp));
print "$line";
}
@fclose($fp);
}
?>

<データファイルfile.txt の中身>
←ここ!1行目
2行目
3行目

<出力結果>
ここに発生→←ここ!1行目2行目3行目

出力結果にカーソルを持って行き、矢印キーで動かしていただければ → と ← の間でカーソルが1回動かず、何かが「存在」していることが確認できると思います。
このような文字は初めての経験でわけがわかりません。予防策がありましたらお願いいたします。

<環境>
レンタルサーバーはPHP4.4.4(UTF-8)
ローカルはWin-XP(3台で確認)
プログラムもデータファイルもUTF-8で書いています。
<ほか>
その文字自体をここに載せようとしましたが「」に変換されてしまいました。これは一体何でしょう??

投稿日時 - 2007-07-20 00:21:52

QNo.3183020

すぐに回答ほしいです

質問者が選んだベストアンサー

65279を十六進表記すると 0xfeff なのでBOMですね。
ということで、php utf-8 bom で検索してみると以下のページが
トップに引っかかりました

The elephant vanishes PHP
http://oubakiou.blog8.fc2.com/blog-category-17.html

> それで色々調べてみると、これはPHPのバグらしい。
>
> Bug #22108 php doesn't ignore the utf-8 BOM
http://bugs.php.net/bug.php?id=22108
>
> 対象OSは全て、対象のPHPバージョンは全て、StatusはWont fix。

PHPスクリプトを編集するのに使っているエディタの設定をいじって、
BOMをつけないようにすればよいようです。

投稿日時 - 2007-07-20 02:29:41

お礼

なるほど!!PHPのバグとは!!ヾ(iДi)/

http://sakaguch.com/utf1.html
によると、
「保存はBOMなしのUTF-8Nにしなければなりません。」
とあり、単なるUTF-8じゃいかんようです。

実際UTF-8Nで検証したところ「見えない文字は」発生しませんでした。
誠にありがとうございました。

投稿日時 - 2007-07-21 00:51:44

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問