2012-02-21 148 views

回答

5

输出字符集(第二个参数)应该与输入字符集(第一个参数)不同。如果它们相同,那么如果字符串中存在非法UTF-8字符,则iconv将根据输入字符集将其拒绝为非法。

+0

你提出了一个解决方案?我已经[阅读](http://blog.liip.ch/archive/2005/01/24/how-to-get-rid-of-invalid-utf-8-characters.html)[that]( http://www.php.net/manual/en/function.iconv.php#78972)这应该工作 – Znarkus 2012-02-21 10:46:27

+0

是的,我已经看到了这个链接,但看看这个https://github.com/EllisLab /笨/问题/ 261。我的理解是,iconv现在不做输入编码 - 但我可能是错的。上面的链接也有一个链接到另一种解决方案,它位于https://gist.github.com/1262496。 – 2012-02-21 11:10:31

+1

这很有道理。我将首先尝试'mb_convert_encoding($ string,“UTF-8”,“UTF-8”)',如果不能解决问题,我会尝试一下。谢谢! – Znarkus 2012-02-21 13:40:33

-1

简单地忽略通知,您可以使用 “@”:

$string = @iconv("UTF-8", "UTF-8//IGNORE", $string);

+4

这不能解决字符串问题 – SztupY 2014-05-08 12:23:05

+0

返回的字符串是空的 – clod986 2014-09-25 01:52:58

+0

你不应该那样做,因为在某些情况下你可以获得空字符串。 – champion 2016-10-21 07:55:14