wps和微软office的excel文件编码默认不是UTF-8, 笔者为了处理这个问题, 萌试将ANSI直转成UTF-8, 遇到报错
warning: iconv(): Wrong encoding, conversion from "ANSI" to "UTF-8" is not allowed
我们遇到的业务场景是: 程序逻辑和数据库内置的编码都是UTF-8的, 但外部供应商导进来的文件说不准是什么编码, 但已知是有几个可能的编码的。这个场景我们用到了php mbstring的一个自带函数, 先拿源代码举例:
$encode = mb_detect_encoding($str, array('ASCII', 'UTF-8', "GB2312", "GBK"));
这里返回的$encode就是编码值, 类型为字符串。把这个返回的结果直接塞到iconv里面:
$converted_str = iconv($encode, 'UTF-8', $str);
拿到的$converted_str就是转换完的UTF-8字符串。