hello,
Twoje rozwiązanie nie jest dobre w ogóle. Dlaczego? Jest to praca z listów z kodem ASCII pod 256 (przeliczane i wystawiane dobre), ale listów z kodem ASCII powyżej 256 mam "?" znaków.
Tak więc musimy połączyć nasze dwa rozwiązania w jednym 
przykład:
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;
}
tej linii: zdefiniować niż litery z kodu ASCII pod 256 nie będą dekodowane przez mojej funkcji, ale tylko przez Jestem testowania go still.I nie jestem całkowicie pewien, że wszystko działa poprawnie teraz.
Można go przetestować też!