Hallo,
Jou oplossing is nie goed in die algemeen. Hoekom nie? Dit werk met die letters met die ASCII kode onder 256 (omskep en goed vertoon), maar meer as 256 briewe met die ASCII kode Ek het "?" tekens.
Daarom het ons nodig om ons twee oplossings te kombineer in een
byvoorbeeld:
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;
}
hierdie lyn: definieer as die briewe met die ASCII kode onder 256 sal nie deur my funksioneer nie, maar slegs deur gedekodeer Ek toets dit still.I is nie heeltemal seker dat alles korrek werk nou nie.
Jy kan dit te toets!