Здравейте,
Вашето решение не е добро в цяло. Защо? Това е работа с писма с ASCII код по 256 (конвертира и показва добра), но над 256 писма с ASCII код съм "?" знаци.
Ние трябва да обединим нашите две решения в една
Например:
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;
}
този ред: се определят от писма с ASCII код под 256 няма да бъдат декодирани от моята функция, но само от Аз съм го тестване still.I не съм напълно сигурен, че всичко работи правилно сега.
Можете да го тествате!