2011-11-25 33 views
2

當使用money_format()等函數時,我在PHP中遇到setlocale()問題。PHP的setlocale()中的en_GB和en_GB.UTF8有什麼區別?

在我的本地主機上,這些功能只有在我的setlocale()值爲en_GB時纔有效。但是,在我的實時服務器上,只有當setlocale()設置爲en_GB.UTF8時,相同的功能纔會起作用。

所以我的問題是:什麼導致不同的要求?由於目前我的配置文件有一個髒的if/else語句來查找它正在運行的服務器並動態指定setlocale()值。

+0

語言環境是由系統定義的常量。使用'locale -a'來查看允許的設置。在某種程度上他們是魔法價值。這是一個神祕的計劃,沒有建立/可靠的別名/回退標準。 – mario

+0

我在終端(我的本地主機是Mac)運行'locale -a',發現Mac出於某種原因在'UTF8'位用連字符命名,所以我想要的值實際上是'en_GB.UTF-8'。我已經看過一個關於'setlocale()'的PHP文檔,現在在我的腳本中有這個:'<?php setlocale(LC_ALL,'en_GB_UTF8','en_GB.UTF-8'); ?>'。 –

回答

0

什麼是PHP版本是否有差異?不同的操作系統?

你可以使用這個只是改變歐元您所需要的錢

date_default_timezone_set('Europe/London'); 
setlocale(LC_ALL, array('en_GB.UTF8','[email protected]','en_GB','english'));