даже лучше так

Код:
function makeChar($numArr){
$num=0xd090+ord($numArr[1])-192;
if($num>0xd0BF) $num=$num-0xd0BF+0xd17F;
return chr($num>>8).chr($num & 0x00FF);
}
echo chr(0xEF).chr(0xBB).chr(0xBF);
echo preg_replace_callback("/([А-Яа-я])/","makeChar",$str);