0

何が起こったのか: 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']);
    }
4

1 に答える 1

0

setlocale()の最初の引数は でLC_ALL、2 番目の引数は目的のロケールにする必要があります。

于 2013-10-24T10:34:09.093 に答える