PHP:Windows 7中的setlocale

时间:2012-06-12 11:43:38

标签: php windows encoding

我在Windows 7的PHP 5.3中遇到了setlocale函数的问题。

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

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

2 个答案:

答案 0 :(得分:7)

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;
}

答案 1 :(得分: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