Đầu ra HTML của bạn cần phải ở một bảng mã duy nhất, không có cách nào để giải quyết vấn đề đó. Điều này có nghĩa là nội dung trong các bảng mã khác nhau cần được chuyển đổi sang mã HTML của bạn trước. Mặc dù điều đó có thể làm được với iconv
hoặc mb_convert_encoding
, có hai vấn đề bạn phải giải quyết:
- Bạn cần biết (hoặc đoán) mã hóa hiện tại của nội dung
- Bạn cần thực hiện việc này theo cách thủ công, ở mọi nơi
Ví dụ:một giải pháp lý thuyết sẽ là chọn UTF-8 làm mã hóa HTML của bạn và sau đó thực hiện việc này cho tất cả các chuỗi bạn sẽ xuất ra:
$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;
Đoạn mã trên giả định rằng nội dung không phải UTF-8 được mã hóa bằng latin-1, điều này hợp lý theo câu hỏi của bạn.