我正在使用 PHP 14. März 2012
(即 2012 年 3 月 14 日)创建这样的德语日期格式。
我正在使用包含 unix 时间戳的$date[0]
,我像这样将其转换为可读的德国日期。
$date_day_month = strftime('%d. %B', $date[0]);
$date_year = strftime('%Y', $date[0]);
echo $date_day_month . $date_year;
但是我不知何故对像这样的变音ä
打了一个问号
14. M�rz 2012
为什么会这样,我该如何解决这个问题?提前谢谢。
就我而言,对语言环境的简单更改就可以解决问题。
而不是:
setlocale(LC_TIME, "de_DE");
用:
setlocale(LC_TIME, "de_DE.UTF-8");
在 Windows 环境 (XAMPP) 中,setlocale(LC_TIME, "de_DE.UTF-8")
并没有为我解决问题,所以我求助于使用语言环境"de"
然后 - 正如@Chris在他的评论中建议的那样 - 手动将字符串转换为 utf8:
setlocale(LC_TIME, "de");
$maerzLatin1 = strftime('%B', mktime(9, 0, 0, 3, 1, 2016));
$maerzUtf8 = utf8_encode($maerzLatin1); // this one contains "März" UTF8-encoded
你可以尝试让你的网页变成utf-8,把它放在你的head
标签中:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
strftime
取决于语言环境的正确设置,因此请检查您的setlocale()
并确保 PHP 运行的计算机上存在区域设置。
更新
我在服务器上运行了以下代码:
setlocale(LC_ALL, 'de_DE');
$date[0] = mktime( 1, 0, 0, 3, 2, 2012 );
$date_day_month = strftime('%d. %B', $date[0]);
$date_year = strftime('%Y', $date[0]);
echo $date_day_month . $date_year;
这输出:
02. März2012