Output HTML Anda harus dalam satu penyandian, tidak ada jalan lain. Ini berarti bahwa konten dalam penyandian yang berbeda perlu dikonversi ke penyandian HTML Anda terlebih dahulu. Meskipun itu mungkin dilakukan dengan iconv
atau mb_convert_encoding
, ada dua masalah yang harus Anda selesaikan:
- Anda perlu mengetahui (atau menebak) penyandian konten saat ini
- Anda harus melakukannya secara manual, di mana saja
Misalnya, solusi teoretis adalah memilih UTF-8 sebagai penyandian HTML Anda dan kemudian melakukan ini untuk semua string yang akan Anda hasilkan:
$string = '...'; // from the database
// If it's not already UTF-8, convert to it
if (mb_detect_encoding($string, 'utf-8', true) === false) {
$string = mb_convert_encoding($string, 'utf-8', 'iso-8859-1');
}
echo $string;
Kode di atas mengasumsikan bahwa konten non-UTF-8 dikodekan dalam latin-1, yang masuk akal menurut pertanyaan Anda.