PHP 设置区域设置和 strftime 损坏字符?(nb_NO)


PHP setlocale and strftime broken characters? (nb_NO)

我正在尝试用挪威语显示一个带有strftime的日期,如下所示:

echo strftime('%a,%e.%m.', $timestamp);

但是,对于诸如Sunday, February 6这样的日期,上面的格式应为 Lø,02.6 返回为 L�., 6.02. 当尝试使用 %A 显示一整天时,它会呈现为 L�rdag

(我不确定这个角色是否只是在Mac上为我错误地显示,但这里有一个截图以防万一(

在我的HTML的头部,我已经设置了<meta charset="UTF-8">,并通过PHP设置了setlocale(LC_ALL, 'nb_NO');

编辑甚至直接进入服务器上的 php 控制台并执行php -a

setlocale(LC_ALL, 'nb_NO');
echo strftime('%a','20160206');

我得到l�.

经过一些故障排除,尤其是在编辑中的直接控制台测试之后,我运行了一个locale -a,并注意到 UTF-8 语言环境不是通过我的原始sudo locale-gen nb_NO安装的,所以我运行了:

sudo locale-gen nb_NO.utf8,然后还必须相应地设置区域设置setlocale(LC_ALL, 'nb_NO.utf8');现在一切正常。