support more encodings (use iconv-lite instead of singlebyte)