Tale stringa non è codificato nella codifica UTF-8 valido. Potrebbe essere in un'altra codifica come UTF-16 o forse contiene solo alcuni file binari che non corrispondono a nessun formato.
La riga di fondo è che, poiché è stato specificato "UTF-8" come parametro del tipo di codifica di htmlspecialchars(), verrà restituita una stringa vuota se la stringa non è conforme a "UTF-8". Lo afferma nel PHP manual.
Una soluzione semplice consiste nell'utilizzare il flag sostitutivo o ignorato. Cambio:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
A:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
Oppure:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")
Nota: ENT_IGNORE rimuove i byte non conformi. Ciò potrebbe causare a security issue. È meglio comprendere veramente il contenuto della stringa e come viene codificato. Correggere la fonte del problema piuttosto che utilizzare la semplice correzione ENT_IGNORE.
Dovresti chiederti perché la stringa non è codificato in UTF-8 ... è dovrebbe essere, ma non lo è.
Mi è capitato di aver appena riscontrato anche questo problema; puoi leggere i dettagli sul motivo per cui viene restituita una stringa vuota here.
Sembra un problema di charset. Sei sicuro che i tuoi dati siano codificati in UTF-8? –
Potrei aver frainteso il tuo problema, ma l'ho provato su ideone.com e sembra funzionare bene: http://ideone.com/P298n –
@ EmilVikström Come posso assicurarmi di questo? – JimmyBanks