supports non UTF-8 charsets
supports non UTF-8 charsets