使用iconv转换字符编码,经常出现转出的字符串带BOM头的问题。经过测试,发现unicode编码用“utf-32”或“utf-16”,转出或转入,得到的字符串有BOM,而用“utf-32le”、“utf-32be”、“utf-16le”、“utf-16be”这样的,就不会有BOM。
所以需要明确告知iconv,编码的endian,否则转出来的字符串带BOM.
Window上wchar_t是2个字节,Ubuntu上wchar_t是4个字节,所以Unicode编码是不一样的,utf-32还是utf-16要分清,编码的endian是跟字符编码有关,不一定跟系统的endian一致。