2014-02-25 24 views
4

我目前正在使用幾種語言進行本地化,並且遇到了json_decode根據語言環境重新格式化JSON字符串中的小數的問題。當區域設置爲「en」時,小數保持不變。但是,在「fr_FR」語言環境中,例如,它們變爲「13,3」。json_decode重新格式化基於語言環境的JSON中的小數

來源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函數。

+0

PHP格式的*輸出*這些彩車,'json_decode'無關吧,我相信。這會讓它變得更好嗎? – deceze

+0

可能的重複 - http://stackoverflow.com/questions/2906326/setlocale-to-fr-fr-in-php-and-number-formatting –

回答

4

看起來問題在於PHP如何處理數值。 json_decode簡單地將13.3轉換爲一個浮點數,在輸出或轉換爲字符串時是一個本地化的「13,3」。但是,PHP不能很好地處理本地化的數字格式。

按本thread,使用的setlocale已經解決了這個問題(大部分)

setlocale(LC_NUMERIC, 'C'); 
相關問題