halo,
Vaš rješenje nije dobro u općenito. Zašto? To je rad sa slovima sa ASCII kodom ispod 256 (pretvorena i prikazuje dobro), ali slova s ASCII kodom preko 256 imam "?" znakova.
Tako da trebamo kombinirati naša dva rješenja u jednom 
primjer:
PHP Code:
function vbet_encodeToSafeUTF8(&$string) {
$string = preg_replace('/([\340-\357])([\200-\277])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-224)*4096 + (ord(\'\\2\')-128)*64 + (ord(\'\\3\')-128)).\';\'',
$string);
//decode two byte unicode characters
$string = preg_replace('/([\304-\337])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-192)*64+(ord(\'\\2\')-128)).\';\'',
$string);
$string = utf8_decode($string);
return $string;
}
ovaj redak: definirati od slova s ASCII kodom ispod 256 neće biti dekodira moja funkcija, ali samo Ja sam to testiranje still.I nisam posve siguran da sve radi ispravno sada.
Možete ga testirati previše!