带有 PHP 7.1 的 Apache Server 具有错误的编码设置.strftime 和 strtotime 返回



我有点困惑为什么这里的标准服务器设置会返回错误的编码格式。在我的本地机器上一切正常:CMS 后端将当前月份显示为德语字符串,对于 03(三月(,它返回"Mär"。

在服务器上,它返回"M r"。我知道这是在以 UTF-8 输出 ISO 格式时引起的,而无需对其进行编码 (utf8_encode(。

<?php
setlocale(LC_ALL,"de_DE");
echo var_dump((strftime('%b', strtotime('2007-03-01'))));
// Output -> string(3) "M�r"    

如何更改服务器设置,PHP使用UTF-8而不是ISO格式的日期?我不能使用utf8_encode函数,因为它是使用 PHP strftime 和 strtotime 函数的 CMS。

默认服务器 PHP.ini 已经包含default_charset = 'UTF-8'在我的htaccess中,我包括了AddDefaultCharset UTF-8

感谢@apokryfos把我送到正确的方向。就像在文档中提到的函数strftime((使用安装在系统(linux(中的语言环境一样。

。结果将使用 ISO-8859-1 字符集,即使您的所有系统、文件和配置选项都采用 UTF-8...

在我的CMS的配置中,必须恢复该行:

setlocale(LC_ALL, 'de_DE');

显式使用 UTF-8 版本

setlocale(LC_ALL, 'de_DE.utf8');

最新更新