explicitly use utf8 instead of relying on platform encoding to be correct
handle unicode escape sequences in parser