Null byte 0.o

  • Onderwerp starter Onderwerp starter Glest
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Glest

Gebruiker
Lid geworden
6 sep 2007
Berichten
688
Hoi, ik heb een nogal vaag probleem.

Mijn site werkt als volgt:

Alles gaat door één bestand, namelijk index.php. Als je naar een pagina wilt wordt pagina.php ge-include, slaat de output op in een variable en helemaal aan het einde van de index wordt de volledige bron in één keer ge-echoed.

Dit systeem werkt prima, maar bij één pagina gaat het fout. Op een of andere manier komt er een null-byte voor de complete html te staan.

Hierdoor kan ik de html niet valideren op w3c.org. Er komen twee foutmeldingen:

Code:
     Warning No Character Encoding Found! Falling back to UTF-8.
   1. Error Line 1, Column 0: non SGML character number 0.

dit is het begin van de html:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Er staat dus wel een encoding aangegeven. De null-byte kan ik niet zien, maar ik neem maar aan dat die er staat.

Wat ik zou verwachten is dat er ergens een print or echo staat vóórdat de index alles verwerkt. Maar dat is niet zo. Dat heb ik gecontroleerd met een search tool.

Heeft iemand enig idee hoe/waarom er een null-byte voor een document gezet wordt door php?
 
Oplossing al gevonden.

Bleek dat de server geen standaard charset meegaf. Geen diee waarom de embedded dan neit werd gebruikt. Ook geen idee waar de null-byte vandaan komt.

Gefix met header('Content-Type:text/html; charset=UTF-8'); vlak voor de echo (nog een bewijs dat er geen echo voor de eind-echo staat)

Misschien ergen een verdwaalde header(). Ik ga het nog wel eens doorpluizen.
 
Laatst bewerkt:
hmm, het is niet helemaal opgelost. Vandaag ging het weer mis met valideren.

Met output buffering heb ik gevonden dat er inderdaad een null-byte wordt verstuurd. Deze kan ik simpelweg verwijderen met output buffering, en dit verhelpt het probleem ook.

Maar er ik heb geen idee waar die null-byte vandaan komt. Er staan geen echo of print commando's in mijn script.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan