Ten ciąg nie jest kodowany w ważnej kodowania UTF-8. Może być w innym kodowaniu takim jak UTF-16 lub może zawierać tylko binarne śmieci, które nie odpowiadają żadnym formatom.
Najważniejsze jest to, że ponieważ określiłeś "UTF-8" jako parametr typu kodowania htmlspecialchars(), zwrócony zostanie pusty ciąg znaków, jeśli ciąg nie jest zgodny z "UTF-8". Podaje to w PHP manual.
Prostą poprawką jest użycie flagi zastępczej lub ignorowania. Zmiana:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
Do:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
Lub:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")
Uwaga: ENT_IGNORE usuwa bajtów niezgodnych. Może to spowodować a security issue. Lepiej dobrze zrozumieć treść łańcucha i jego kodowanie. Popraw źródło problemu, zamiast używać prostej poprawki ENT_IGNORE.
Należy zadać sobie dlaczego ciąg nie jest kodowany w UTF-8 ... to powinny być, ale tak nie jest.
Tak się złożyło, że właśnie napotkałem ten problem; możesz przeczytać szczegóły na temat tego, dlaczego zwracany jest pusty ciąg znaków: here.
Brzmi jak problem z zestawem znaków. Czy jesteś pewien, że twoje dane są zakodowane w UTF-8? –
Być może nie rozumiem twojego problemu, ale próbowałem go na ideone.com i wygląda na to, że działa dobrze: http://ideone.com/P298n –
@ EmilVikström Jak mam się tego upewnić? – JimmyBanks