我有点困惑为什么这里的标准服务器设置会返回错误的编码格式。在我的本地机器上一切正常: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');