#31366 [Asn->Csd]: Weird bug with setlocale and serialize
| From: | iliaa@php.net | Date: | Tue, 01 Feb 2005 23:11:37 +0000 |
| Subject: | #31366 [Asn->Csd]: Weird bug with setlocale and serialize | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-73218@lists.php.net to get a copy of this message | ||
ID: 31366
Updated by: iliaa@php.net
Reported By: info at smartlogic dot nl
-Status: Assigned
+Status: Closed
Bug Type: Math related
Operating System: *
PHP Version: 4CVS, 5CVS (2005-01-01)
Assigned To: derick
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2004-12-31 11:41:46] info at smartlogic dot nl
Description:
------------
After setting the setlocale the decimal point disappears.
This is the same bug as "Bug #14235: serialize and setlocale:
inconsistent behavior" but it still appears in PHP 4.3.10 while the
possible solution indicates:
"This bug has already been fixed in the latest released version of
PHP, which you can download at http://www.php.net/downloads.php
this was fixed in 4.1.x with the switch to a non-sprintf-based
serialize implementation."
Reproduce code:
---------------
#code without setlocale
echo "* WITHOUT setlocale\n\n";
bug_test();
#code with setlocale
echo "* WITH setlocale\n\n";
setlocale (LC_ALL, 'nl_NL');
bug_test();
function bug_test()
{
$bill_lines[0]["price"]=42.02;
echo "Original Input:
".$bill_lines[0]["price"]."\n\nArray:\n\n";
print_r(array_values($bill_lines));
$encoded=serialize($bill_lines);
echo "\n\nSerialized array: $encoded \n\n";
$decoded=unserialize($encoded);
echo "Ouput after unserialize: ".$decoded[0]["price"]."\n\n";
}
Expected result:
----------------
The output after the setlocale and the unserialize is 42 instead of
42,02 or 42.02
Actual result:
--------------
* WITHOUT setlocal
Original Input: 42.02
Array:
Array
(
[0] => Array
(
[price] => 42.02
)
)
Serialized array:
a:1:{i:0;a:1:{s:5:"price";d:42.02000000000000312638803734444081783294677734375;}}
Ouput after unserialize: 42.02
* WITH setlocale
Original Input: 42,02
Array:
Array
(
[0] => Array
(
[price] => 42,02
)
)
Serialized array:
a:1:{i:0;a:1:{s:5:"price";d:42.02000000000000312638803734444081783294677734375;}}
Ouput after unserialize: 42
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31366&edit=1