Windows下的strftime编码问题

时间:2014-05-31 06:49:20

标签: php encoding utf-8 strftime

我在Windows下使用strftime('%B')时出现问题。 问题是在windows下,此函数返回非utf8编码的字符串(因为Windows不支持UTF-8语言环境)。 我已经搜索了很多关于这个主题的内容,并且发现了很多使用utf8_encode(strftime('%B'))的建议,但这没有用。我在utf8_encode后得到一个非常奇怪的字符串。 还有另一种解决方案:例如使用mb_convert_encoding

$month = strftime('%B');
$month = mb_convert_encoding($month, 'UTF-8', 'CP1251'); // For Russian locale

它有效,但只有在开发精确的语言环境时才有用。但我需要一个通用的解决方案。你可以建议:

$month = strftime('%B');
$month = mb_convert_encoding($month, 'UTF-8', mb_detect_encoding($month));

但这不起作用,因为即使$month非utf8,mb_detect_encoding($month)返回' UTF-8'。

是否有人遇到过这个问题并找到了解决办法?我需要一个通用的解决方案,因为我要向我最喜欢的Laravel框架发出一个拉取请求(它有一个Form :: selectMonth()函数,它生成一个HTML select输入,预先填充数月,这是有效的完全适用于Linux系统,但在本地化Windows系统下失败。)

1 个答案:

答案 0 :(得分:0)

试试这个::

setlocale(LC_ALL, '');

echo(iconv('CP1251', 'UTF-8', strftime('%B')));