Domanda

Quando si utilizza il php include la funzione include viene eseguito con successo, ma è anche l'output di un char prima dell'uscita di inclusione è riprodotto, il salmerino di valore esadecimale 3F e non ho idea di dove si proviene, anche se sembra accadere con ogni includere.

In un primo momento ho thbought era la codifica del file, ma questo non sembra essere un problema.Ho creato un metodo di prova per dimostrare che:(il link non funziona più) http://driveefficiently.com/testinclude.php questo file è costituito da solo:

<? include("include.inc"); ?>

e includere.inc consiste solo:

<? echo ("hello, world"); ?> 

e ancora, l'output è: "?ciao, mondo" dove ?è un char con un valore casuale.È questo valore che non so le origini e a volte è avvitando i miei siti un po'.

Qualche idea di dove questo potrebbe venire da?In un primo momento ho pensato che potrebbe essere qualcosa a che fare con la codifica del file, ma non penso sia un problema.

È stato utile?

Soluzione

Quello che state vedendo è una codifica UTF-8 Byte Order Mark:

UTF-8 in rappresentanza della DISTINTA base è la sequenza di byte EF BB BF, che appare come l'ISO-8859-1 caratteri  nella maggior parte degli editor di testo e browser web non sono preparati a gestire UTF-8.

Byte Order Mark su Wikipedia

PHP non capire che questi personaggi dovrebbero essere "nascosto" e la invia al browser come se fossero dei normali caratteri.Per sbarazzarsi di loro, è necessario aprire il file utilizzando un "proprio" editor di testo che vi permetterà di salvare il file in UTF-8 senza il leader BOM.

Si può leggere di più su questo problema qui

Altri suggerimenti

Il vostro web server (o il vostro editor di testo), apparentemente, include un BOM nel documento.Non vedo il ladro carattere nel mio browser, tranne quando ho impostato il sito di codifica esplicitamente di Latin-1.Poi, vedo due (!) UTF-8 Distinte base.

/EDIT:Il fatto che ci sono due Distinte materiali, concludo che la DISTINTA è effettivamente incluso con il vostro editor all'inizio del file.Che editor usi?Se si utilizza Visual Studio, devi dire “Salva con nome ...” dal menu File e quindi scegliere il pulsante “Salva con codifica ...”.C', scegliere “UTF-8 senza BOM” o qualcosa di simile.

Non appare nella pagina visualizzata in internet explorer o Firefox, ma si può vedere il personaggio divertente quando si Visualizza Sorgente in IE

enter image description here

È questo su una macchina Linux?Si poteva fare di trova e sostituisci con vim o sed, per vedere se si può sbarazzarsi dei 3F in quel modo?

Se è su Windows, prova ad aprire includere.inc con il blocco note per vedere se la divertente char è visibile e può essere eliminato.

Mi piacerebbe anche essere curioso di vedere cosa succede se si copia il codice di inclusione e solo correre da solo.

Carattere 3F realtà è il punto di domanda, non e ' solo la visualizzazione di uno.

Ottengo gli stessi risultati come Thomas, senza il punto interrogativo mostrando.

In teoria potrebbe essere qualche problema con un proxy web, ma io sono incline a sospettare un randagio punto interrogativo in PHP markup...che forse hai risolto, quindi non vediamo il problema.

Vedo hello, world la pagina è collegato.Nessun problema che io vedo...

Sto usando Firefox 3.0.1 e Windows XP.Che browser/OS in esecuzione?Forse potrebbe essere il problema.

Mi piacerebbe anche essere curioso di vedere cosa succede se si copia il codice al di fuori di la comprendono e solo correre da solo.

Mark:questo è su un hosting condiviso la soluzione, quindi non posso avere accesso alla shell il file.Tuttavia, come si può vedere qui, ci sono personaggi che non ci dovrebbero essere, e con lo stesso file come un file di script non è in grado di produrre questo tipo char.(Condiviso società di hosting sono stati di 0 aiuto, continuo a dirmi che è un problema di browser).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top