PHP - Garip karakterler hata bildirimini devre dışı olduğunda

2 Cevap

Bu temelde ben yapıyorum hepsi bu

echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s);

Ben test etmek için bu sunucudan ti.php dosyayı kaldırmak zaman hatayı gizler ama eğer ben bir hata olurdu benim tarayıcıda bu olsun:



Ne cehennem olduğunu (lol)? Ben daha önce hiç görmemiştim ve onu görünür neden bir açıklama, herhangi bir fikir düşünemiyorum?

2 Cevap

http://en.wikipedia.org/wiki/Byte-order_mark

Bu bir iso-8859-1 biri olarak kabul UTF-8 boş belgenin BOM bulunuyor.

dosya_ get_contents görüntülenmeyen bir hata, üretir, bu nedenle bu temelde boş bir UTF-8 belgedir.

Bu varsayılan ayarı olmalıdır gibi herhangi bir charset bilgi olmadan, tarayıcı bir iso-8859-1 belgesi olarak görüntüler. Yani BOM bu garip karakter olarak görünür.

EDIT:

Nitekim, ben, senin sorunun üç karakter kopyalanmış bir belge onları yapıştırılan, onaltılık kodlar baktı: UTF-8 BOM olan EF BB BF,.

FWH cevabı üzerine çakmak için, içerik-tipi başlığındaki uygun kodlama ile tarayıcıya içeriği çıkış emin olun.

Bunu yapmanın en kolay yolu sadece varsayılan charset ayarlamak için

ini_set( 'default_charset', 'UTF-8' );
echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s);

Eğer tercih Ama eğer açık bir header () çağrısı kullanabilirsiniz.