Dobrý den,
Vaše řešení není dobré v obecně. Proč? To je práce s dopisy s ASCII kód, pod 256 (převést a zobrazit dobře), ale dopisy s ASCII kódu přes 256 jsem se "?" znamení.
Takže musíme spojit naše dvě řešení v jedné 
Příklad:
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;
}
tento řádek: definovat, než dopisy s ASCII kód, pod 256 nebude dekódovat moje funkce, ale pouze Jsem otestování still.I si není zcela jist, že vše funguje správně nyní.
Můžete vyzkoušet také!