
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で書いています。
<ほか>
その文字自体をここに載せようとしましたが「」に変換されてしまいました。これは一体何でしょう??
No.1ベストアンサー
- 回答日時:
65279を十六進表記すると 0xfeff なのでBOMですね。
ということで、php utf-8 bom で検索してみると以下のページが
トップに引っかかりました
The elephant vanishes PHP
http://oubakiou.blog8.fc2.com/blog-category-17.h …
> それで色々調べてみると、これは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をつけないようにすればよいようです。
なるほど!!PHPのバグとは!!ヾ(iДi)/
http://sakaguch.com/utf1.html
によると、
「保存はBOMなしのUTF-8Nにしなければなりません。」
とあり、単なるUTF-8じゃいかんようです。
実際UTF-8Nで検証したところ「見えない文字は」発生しませんでした。
誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPの文字化け
-
Subversionのリポジトリの削除
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
上位ディレクトリ名(フォルダ...
-
phpの処理中に画面表示ををする...
-
form actionで二つ送信先を指定...
-
onedrive にexcelファイルをア...
-
「@$変数」の「@の意味は?」
-
mysql複数レコードをまとめて削...
-
PHP内、ボタン押下と同時にリロ...
-
PHPの値受け渡しとアンカーを一...
-
php,mysqlにて画像パス保存/表...
-
PHPの設定で、 エラーが発生し...
-
「クラス関数」「メンバ関数」...
-
zip圧縮の種類について
-
文字列を段落で分ける方法を教...
-
PHPで、エラーがない場合のみ画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
データベースから取り出した日...
-
PHPの文字化けした文字だけ削除...
-
PHPExcelで日本語(漢字)ファ...
-
Content-Typeが機能していない?
-
$str=preg_replace('/\\u3000/'...
-
scandir関数取得結果の文字化け
-
PHPでCSV出力時の文字化け(一部)
-
XML出力時の日本語一部文字化け
-
SQLiteManagerが文字化け
-
phpのhex2binについてphpで、ut...
-
mysql utf8、php・euc-jp で出...
-
ハシゴの「高」が「?」に置き...
-
php5,MySQL5で文字化けが起こる
-
SJIS文字をtrimすると文字化け
-
【PHP】ファイル読み込みで...
-
i18n_convert と mb_convert_e...
-
php,mysqlでの文字化け(機種依...
-
phpで文字化け(php.ini)
-
PHPの文字コード (php.iniの...
おすすめ情報