我正在使用setlocale
并strftime
以巴西葡萄牙语显示本地化月份名称:
setlocale(LC_ALL, 'pt_BR');
$meses = array();
for($m=1; $m<=12; $m++) {
$meses[$m] = strftime('%B', mktime(0, 0, 0, $m, 1));
}
这在我的开发环境中运行良好,但在生产服务器上它在 3 月失败(在葡萄牙语中是“março”)。如果我utf8_encode
是月份名称,它可以在服务器上运行,但在我的开发环境中,我会得到一个双编码输出。我怀疑这是因为每台机器上的语言环境编码不同。我想正确的解决方案是在服务器上为 pt_BR 安装一个 UTF8 语言环境设置,但如果可能的话,我想避免这种情况(长话短说,服务器管理员,呃,很难)。
是否可以从 PHP 中检测到当前语言环境的编码,所以我可以围绕这个问题进行编码,并使我的代码无论语言环境/编码设置如何都能正常工作?