Buna ziua,
Soluţia nu este bună în general. De ce? Acest lucru este de lucru cu litere cu cod ASCII în conformitate cu 256 (convertite şi afişat bun), dar scrisori cu cod ASCII peste 256 am "?" semne.
Deci, avem nevoie de a combina cele două soluţii într-un singur
de exemplu:
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;
}
această linie: define decât scrisori cu cod ASCII în conformitate cu 256 nu vor fi decodate de către funcţia mea, ci numai de către Sunt o testare still.I nu sunt în totalitate sigur că totul funcţionează corect acum.
Îl puteţi testa prea!