support utf-8 and other non-US-ASCII chars