halo,
Solusi Anda tidak baik pada umumnya. Mengapa? Hal ini bekerja dengan huruf dengan kode ASCII di bawah 256 (dikonversi dan ditampilkan baik) namun surat dengan kode ASCII lebih dari 256 saya "?" tanda-tanda.
Jadi Kita perlu menggabungkan dua kami solusi dalam satu 
contoh:
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;
}
baris ini: mendefinisikan dari huruf dengan kode ASCII di bawah 256 akan tidak diterjemahkan oleh fungsi saya, tetapi hanya oleh Saya menguji still.I saya tidak sepenuhnya yakin bahwa segala sesuatu bekerja dengan benar sekarang.
Anda dapat menguji juga!