Вы получаете все правильные байты, но отображаете их неправильно.
Убедитесь, что вы используете правильный набор символов в заголовке типа контента.Самый простой способ сделать это в PHP такой:
ini_set( 'default_charset', 'UTF-8' );
Но вы также можете сделать это
header( 'Content-Type: text/html; charset=utf-8' );