b_stream can now read/write utf-8 encoded data, and will do so unless
the stream is in binary mode.
b_stream will also report an error it encounters invalid utf-8 data
(unless binary mode is enabled).
b_stream represents a character-based I/O stream. it is an abstract interface
that can be implemented by any other object, allowing the object to be
interacted with via the b_stream api.