何が起こったのか: MS Windows ロケールを 'Polish_Poland.1250' に設定しました ( を使用setlocale(LC_ALL, "polish_poland")
)。次に、 を使用sprintf('%.2f',5.55)
し、出力5,55を予想しましたが、 5.55を得ました。
linuxを使用すると、さまざまなことが起こります。ロケールは によって設定されsetlocale(LC_ALL, 'pl_PL.UTF-8')
ます。次に、 sprintf('%.2f',5.55)は5,55を出力します(MS Windows で期待していた値)。
この奇妙な (間違った?) 動作について説明してください。
編集:これは私のアプリがロケールを設定する方法です
if($os==='windows')
{
putenv('LANG=polish.UTF8');
putenv('LANGUAGE=polish.UTF8');
bind_textdomain_codeset($_SERVER['HTTP_HOST'], 'UTF8');
$debug = setlocale(LC_ALL, Cms_Aplikacja::$config['LC_WINDOWS']);
}
else if($os==='linux')
{
$debug = setlocale(LC_ALL, Cms_Aplikacja::$config['LC_LINUX']);
}