在php中,使用iconv函数转换字符集很好用,不过有时iconv转换会返回false或空字符串,这不算是iconv的问题,这其实是字符集的问题,但是实际编码中应该算是iconv的bug了。
测试下这段字符串用iconv转换后的效果:
返回结果:
第一个特殊字符以后的字符都不能显示。
iconv有两个参数:
分别是TRANSLIT 和IGNORE ,含义是TRANSLIT 表示如果目标编码里面不能翻译原编码,那么就直接找一个类似的最相近的字符或者字符串替代,例如€可能会被替换为EUR;而IGNORE 遇到目标字符集不能翻译的原始字符则直接跳过忽略,不返回false。
使用方法:
鉴于此,我认为iconv应该提供一个默认的参数IGNORE,避免开发者使用不善时出现返回空字符串的情况。