Bug #63450 [Opn->Nab]: iconv returns false when illegal character encountered
| From: | rasmus@php.net | Date: | Tue, 06 Nov 2012 21:54:00 +0000 |
| Subject: | Bug #63450 [Opn->Nab]: iconv returns false when illegal character encountered | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-174542@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=63450&edit=1
ID: 63450
Updated by: rasmus@php.net
Reported by: trollofdarkness at gmail dot com
Summary: iconv returns false when illegal character
encountered
-Status: Open
+Status: Not a bug
Type: Bug
Package: ICONV related
Operating System: Debian 5 Lenny
PHP Version: 5.4.8
Block user comment: N
Private report: N
New Comment:
This is not a PHP issue. This is a change in recent versions of libiconv. If you
link PHP against an older version of libiconv it will work again or you can use
mbstring_convert_encoding(). And we have a new uconverter extension feature
coming that will do a better job than either of these. See
https://wiki.php.net/rfc/uconverter
Previous Comments:
------------------------------------------------------------------------
[2012-11-06 21:45:33] trollofdarkness at gmail dot com
Description:
------------
Hi everyone,
I have been, since I think the version 5.3.x is out (and still with 5.4.8),
experiencing issues with iconv.
Especially, when an illegal character is encountered and the //IGNORE flag is
set on the target charset, the function returns FALSE instead of just skipping
this character.
This is problematic because if a single character in a 50 000 chars long string
is "illegal" then the output is nothing, just for one char...
It does not happen with the TRANSLIT flag.
I experienced that with UTF8 (from) and ISO-8859-15 (to) charsets, I did not
test with other ones. Below is an example to reproduce the bug.
Note : I saw there are other bug reports about similar issues, but they're all
saying the string is cut... In my case, it literally returns false. So, might be
different?
Test script:
---------------
<?php
$str = "
foo
è
foo
";
$result = iconv("UTF-8", "ISO-8859-15"."//IGNORE", $str);
var_dump($result); // false, instead of "foo ... foo"
?>
Expected result:
----------------
foo
foo
Actual result:
--------------
false
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63450&edit=1