json_encode output numbers formatted according to the locales instead of std
| Bug #42785 | json_encode output numbers formatted according to the locales instead of std | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Submitted: | 2007-09-28 09:32 UTC | Modified: | 2007-10-01 15:33 UTC |
|
||||||||||
| From: | gebura at evilkittens dot org | Assigned: | iliaa (profile) | |||||||||||
| Status: | Closed | Package: | JSON related | |||||||||||
| PHP Version: | 5.2.4 | OS: | Linux / Unix | |||||||||||
| Private report: | No | CVE-ID: | None | |||||||||||
[2007-09-28 09:32 UTC] gebura at evilkittens dot org
Description: ------------ json_encode() output numbers formated according the to locales instead of standard format. For example, in french coma is used for separate decimals. (like 1,5) But in json: - numbers must use a point for separate decimals (like 1.5) - coma is used as field separator. (like "a","b") So the result is not correct. This bug is related with Bug #40360 ('current locale affects how json_encode encodes floats') witch is closed. Reproduce code: --------------- <?php if (setlocale(LC_ALL,"fr_FR.UTF-8") != "fr_FR.UTF-8") { die("Could not change the locale!"); } $foo = Array(100.10,"bar"); echo json_encode($foo); Class bar {} $bar1 = new bar; $bar1->a = 100.10; $bar1->b = "foo"; echo json_encode($bar1); ?> Expected result: ---------------- [100.1,"bar"]{"a":100.1,"b":"foo"} Actual result: -------------- [100,1,"bar"] // 2 fields => 3 fields {"a":100,1,"b":"foo"} // the output couldn't be evaluated
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2007-10-01 15:33 UTC] iliaa@php.net