Bug->Doc #81362 [Opn]: iconv UTF-8//IGNORE fails to strip "\xF5\x80\x80\x80"

From: Date: Sun, 15 Aug 2021 15:42:44 +0000
Subject: Bug->Doc #81362 [Opn]: iconv UTF-8//IGNORE fails to strip "\xF5\x80\x80\x80"
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-19072@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81362&edit=1 ID: 81362 Updated by: cmb@php.net Reported by: divinity76 at gmail dot com Summary: iconv UTF-8//IGNORE fails to strip "\xF5\x80\x80\x80" Status: Open -Type: Bug +Type: Documentation Problem Package: ICONV related PHP Version: 8.0.9 Block user comment: N Private report: N New Comment: The latest GNU libiconv version is 1.16[1]. The iconv() documentation[2] already warns about //TRANSLIT being implementation specific; the same applies to //IGNORE. I suggest that you always build against GNU libiconv; system implementations are known to be limited (or even buggy). So no, not an implementation bug, but rather a doc issue. [1] <https://www.gnu.org/software/libiconv/> [2] <https://www.php.net/manual/en/function.iconv.php> Previous Comments: ------------------------------------------------------------------------ [2021-08-15 15:34:21] divinity76 at gmail dot com Description: ------------ it does reproduce on "PHP8.0.3 + iconv 2.28 + Ubuntu 20.04", it also reproduce on 3v4l.org everywhere from PHP5.6.0 to PHP8.0.9 inclusive, but unknown iconv/OS: https://3v4l.org/1b4G8 (the string also appears to trigger a bug in mb_check_encoding() that was fixed in 5.6.0?) interestingly it does *not* reproduce on "PHP7.3.7-for-cygwin + iconv 1.0 + Windows 10", there it correctly strip the string down to string(3) "PHP" it's possible that it's the result of a bug introduced sometime after iconv 1.0 and <= iconv 2.28? Test script: --------------- <?php $invalid_utf8="\xF5\x80\x80\x80PHP"; $should_be_valid_utf8=iconv("UTF-8","UTF-8//IGNORE",$invalid_utf8); var_dump($should_be_valid_utf8,bin2hex($should_be_valid_utf8),mb_check_encoding($should_be_valid_utf8)); Expected result: ---------------- string(3) "PHP" string(6) "504850" bool(true) Actual result: -------------- string(7) "����PHP" string(14) "f5808080504850" bool(false) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=81362&edit=1

« previous php.doc.bugs (#19072) next »