こんにちは。
utf8_encoding()には、ditto以外でも悩まされる場合があります。先々を考えるとdittoで多言語を考慮したコーディングをするように変更してもらった方が良いように思います。
基本的には$dtがISO-8859-*の文字範囲であることを想定しているんだと思いますが、この部分に多言語の文字列が入る可能性があるとすれば、mb拡張があれば
$dt = mb_convert_encoding($dt, ’UTF-8’);
なければiconvあたりをチェックして、最後にutf8_encodingを採用する感じでしょうか。
日本語環境を考慮した上でのphpしか経験がないので、逆に ISO-8859-* のみの環境を考慮するとどうすればいいか明確な答えが分かりません。
あるソースで、設定されている(そのプログラム上の設定です)文字コードによって utf8_encoding か iconv か mb_convert_encoding のいずれかで分岐処理しているのを見たことがあるのですが、そうするのが正解でしょうか。。。
詳しい方の見解をお聞きしたいです。
#フランス語コミュニティに同じことで悩んで、別解を提示しているスレッドがありましたので追記しておきます。
http://modxcms.com/forums/index.php?topic=15672.0
ロケールがutf-8でなければutf8_encodeするようになっていますが、ロケールがeucだったりするとダメなんじゃないかなぁ。。。