Olá,
Sua solução não é boa em geral. Por quê? Esse é um trabalho com letras com código ASCII e menos de 256 (convertida e exibida bom), mas letras com código ASCII mais de 256 que eu tenho "?" sinais.
Então, precisamos combinar nossos duas soluções em um
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 linha: definir do que cartas com código ASCII e menos de 256 não vai ser decodificado pela minha função, mas apenas por Estou testando still.I não estou totalmente certo de que tudo funciona corretamente agora.
Você pode testá-lo também!