訂正です。
echo $char1; -> echo dechex($char1).dechex($char2);
でした。

この値が笑った顔の絵文字だとEEB2、ハートだとEF82になるのです。。(通常だと)
$strにはきちんと絵文字が入っています。
本来なら笑った顔はF3A1、ハートはF7B2になるはずなんです(参照: ttp://www.au.kddi.com/ezfactory/tec/spec/pdf/typeD.pdf

内部コードはEUC-JP、表示画面はSJISです。
お願い致します。