我目前正在开发一个本地化为几种语言的网站,我遇到了一个问题,即json_decode根据语言环境重新格式化JSON字符串中的小数.当语言环境设置为“en”时,小数保持不变.但是,在“fr_FR”语言环境中,它们会变为“13,3”.
来源JSON:
{"debug":[{"id":13.3}]}
输出“en”
Array
(
[debug] => Array
(
[0] => Array
(
[id] => 13.3
)
)
)
输出“fr_FR”
Array
(
[debug] => Array
(
[0] => Array
(
[id] => 13,3
)
)
)
有没有什么理由json_decode这样做?有没有办法防止它?
该错误导致Gravity Forms WordPress插件出现问题,但我已经将问题隔离到了json_decode函数.
解决方法:
看起来问题在于PHP如何处理数值. json_decode只是简单地将13.3转换为float,它在输出或转换为字符串时是本地化的“13,3”.但是,PHP不能很好地处理本地化的数字格式.
根据这个thread,使用setlocale解决了这个问题(大部分)
setlocale(LC_NUMERIC, 'C');
标签:json,wordpress,php,localization
来源: https://codeday.me/bug/20190624/1279878.html