首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP检测服务器区域设置编码

使用PHP检测服务器区域设置编码
EN

Stack Overflow用户
提问于 2013-04-24 03:16:51
回答 3查看 2.1K关注 0票数 1

我使用setlocalestrftime以巴西葡萄牙语显示本地化月份名称:

代码语言:javascript
复制
setlocale(LC_ALL, 'pt_BR');
$meses = array();
for($m=1; $m<=12; $m++) {
    $meses[$m] = strftime('%B', mktime(0, 0, 0, $m, 1));
}

这在我的开发环境中工作得很好,但是在生产服务器上,它在三月失败了(葡萄牙语是"março")。如果我对月份名称执行utf8_encode操作,它将在服务器上运行,但在我的开发环境中,我会得到一个双重编码的输出。我怀疑这是因为每台机器上的区域编码不同。我想正确的解决方案是在服务器上为pt_BR安装一个UTF8语言环境设置,但如果可能的话,我想避免这种情况(长话短说,服务器管理员是,呃,困难的)。

是否可以从PHP中检测当前语言环境的编码,这样我就可以绕过这个问题进行编码,并使我的代码在不考虑语言环境/编码设置的情况下工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-24 03:37:54

在问题下面的注释中,我们可以解决这个问题。这是因为两个系统上的区域设置名称不同,一个系统使用pt_BR.uft-8,另一个系统使用pt_BR.UTF8

最后,我们同意在一个配置文件中定义语言环境并使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-04-24 03:27:34

使用

代码语言:javascript
复制
echo setlocale(LC_CTYPE, 0); // en_US.UTF-8

来获取当前的编码,然后解决它。

将零传递给setLocale会给出区域设置值。在本例中,我们将获取LC_CTYPE设置的值。

票数 3
EN

Stack Overflow用户

发布于 2016-04-13 23:48:02

要获取strftime使用的编码,请使用

代码语言:javascript
复制
 mb_internal_encoding()

要将stftime编码的字符串转换为utf-8,请使用

代码语言:javascript
复制
mb_convert_encoding(strftime($format, $timestamp), 'UTF-8', mb_internal_encoding());
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16177459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档