我在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系统下失败。)
答案 0 :(得分:0)
试试这个::
setlocale(LC_ALL, '');
echo(iconv('CP1251', 'UTF-8', strftime('%B')));