【问题标题】:PHP: setlocale in Windows 7PHP:在 Windows 7 中设置区域设置
【发布时间】:2012-06-15 07:02:48
【问题描述】:

Windows 7 中 PHP 5.3 中的 setlocale 函数存在问题。

我需要使用 UTF-8 编码设置俄语语言环境。我看到了一些解决方案,其中是 Russian_Russia.65001,但是具有这种语言环境的函数返回 FALSE。

所有解决方案都是为在 Windows XP 中使用而设计的,其中语言环境列表位于控制面板中。在 Windows 7 中,此功能已被删除。

【问题讨论】:

    标签: php windows encoding


    【解决方案1】:

    It's not possible to use UTF-8 locales on windows systems.:

    如果您提供像 UTF-7 或 UTF-8 这样的代码页,setlocale 将失败,返回 NULL。

    只有 Windows 代码页 Russian_Russia.1251 可以工作(参见 Moodle's table of locales)。

    您仍然可以尝试设置两者,看看哪一个出现:

    if ($newLocale = setLocale(LC_CTYPE, 'ru_RU.UTF-8', 'Russian_Russia.1251'))
    {
       echo 'Locale is now set to: ' . $newLocale;
    }
    

    【讨论】:

    • 那小代码是半天研究的成果 :) 我只是希望女士有充分的理由不支持 UTF-8。现在是 2013 年!
    【解决方案2】:

    这在 Windows 7 上对我有用

    putenv('LANG=fr_CA.UTF-8');
    setlocale(LC_ALL,'fr_CA.UTF-8');
    bindtextdomain('translation','./language');
    bind_textdomain_codeset('translation','UTF-8');
    textdomain('translation');
    

    .po/.mo 文件的路径

    ./language -> fr_CA.UTF-8 -> LC_MESSAGES -> translation.po
    ./language -> fr_CA.UTF-8 -> LC_MESSAGES -> translation.mo
    

    【讨论】:

    • 当然这里 fr_CA 代表法语-加拿大人(不是俄语)
    • 欢迎来到 SO,感谢您的回答。如果您更详细地查看这个问题,您会注意到它已经有将近 2 年的历史了,并且作者已经接受了他们认为已经充分回答了他们的问题的答案。这个问题已经有近一千个观点,所以你有时可能会帮助别人,但实际上你最好把注意力集中在最近的问题上。再次感谢您的回答,非常感谢,我只是想指导您使用 SO 和参与社区。​​span>
    猜你喜欢
    • 2012-05-06
    • 2020-01-29
    • 1970-01-01
    • 2017-05-17
    • 2016-03-23
    • 2013-12-26
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多