Ola,
A súa solución non é boa en xeral. Por que? Ese é un traballo con letras con código ASCII e menos de 256 (convertida e exhibida bo), pero letras con código ASCII máis de 256 que eu teño "?" sinais.
Entón, cómpre combinar nosos dúas solucións nun
exemplo:
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;
}
esta liña: definir que cartas con código ASCII e menos de 256 non vai ser decodificado pola miña función, pero só por Estou probando still.I non estou totalmente seguro de que todo funciona correctamente agora.
Podes probalo tamén!