It is necessary, it gets ASCII-8BIT back from the caller. This means people will put in a different encoding than what they get out. I'm not sure what to do other than assume UTF-8.