Directly use read_char() instead of read_byte()

This should fix UTF8 problems.