chuỗi Đó không phải là mã hóa trong mã hóa hợp lệ UTF-8. Nó có thể được mã hóa khác như UTF-16 hoặc có lẽ nó chỉ chứa một số rác nhị phân không tương ứng với bất kỳ định dạng nào. Nếu bạn chỉ định "UTF-8" làm thông số kiểu mã hóa của htmlspecialchars(), nó sẽ trả về một chuỗi rỗng nếu chuỗi không tuân thủ "UTF-8". Nó tuyên bố điều này trong PHP manual.
Sửa lỗi đơn giản là sử dụng cờ thay thế hoặc bỏ qua. Thay đổi:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
Để:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
Hoặc:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")
Lưu ý: ENT_IGNORE loại bỏ các byte không tuân thủ. Điều này có thể gây ra a security issue. Sẽ tốt hơn nếu bạn hiểu nội dung của chuỗi và cách mã hóa. Sửa chữa nguồn gốc của vấn đề thay vì sử dụng ENT_IGNORE sửa lỗi đơn giản.
Bạn nên tự hỏi mình lý do tại sao chuỗi của bạn không được mã hóa theo UTF-8 ... nó nên, nhưng không phải.
Tôi cũng đã gặp sự cố này; bạn có thể đọc chi tiết về lý do tại sao một chuỗi trống đang được trả lại here.
Nghe giống như vấn đề bộ ký tự. Bạn có chắc chắn dữ liệu của mình được mã hóa UTF-8 không? –
Tôi có thể hiểu sai vấn đề của bạn, nhưng tôi đã thử điều này trên ideone.com và có vẻ như hoạt động tốt: http://ideone.com/P298n –
@ EmilVikström Làm cách nào để tôi đảm bảo điều này? – JimmyBanks