HTML出力は単一のエンコーディングである必要があります。それを回避する方法はありません。これは、異なるエンコーディングのコンテンツを最初にHTMLエンコーディングに変換する必要があることを意味します。それはiconv
で行うことができますが またはmb_convert_encoding
、解決しなければならない問題が2つあります。
- コンテンツの現在のエンコーディングを知る(または推測する)必要があります
- これはどこでも手動で行う必要があります
たとえば、理論的な解決策は、HTMLエンコーディングとしてUTF-8を選択し、出力するすべての文字列に対してこれを実行することです。
$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;
上記のコードは、UTF-8以外のコンテンツがlatin-1でエンコードされていることを前提としています。これは、質問に応じて妥当です。