implement a streaming reader supporting utf8 decoding