我正面临与葡萄牙语-BR中的charset格式化单词相关的问题,其中包含 cedilla 。
当我用setlocale
enconding将utf-8
设置为'portuguese-brazil'时,PHP似乎不理解它。
如图所示,我尝试将当前月份的英语转换为葡萄牙语:
正如我们所看到的,上面的值应该向最终用户显示Março(这意味着 March 英文)。 我尝试使用葡萄牙语和这里的Stack Overflow进行导航,但这些问题和解决方案都不适用于我。
在我的HTML文件中,我的meta
标记定义如下:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
它自己保存的文件也按UTF-8 w/o BOM
格式保存。
本月显示的代码段:
<div id="ow-marketplace" class="col-xs-12 col-sm-12 col-md-12 table-responsive">
<?php
setlocale( LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'portuguese-brazilian' );
date_default_timezone_set( 'America/Sao_Paulo' );
$data = strftime( '%B/%y', strtotime('today'));
echo "<h4 class=\"page-header\">Vendas Atuais do mês de ". ucfirst($data) ."</h4>";
?>
<div class="box-content">
我不知道如何解决这个问题,但我认为charset似乎没有按预期工作 任何人都可以帮我这个吗?
如果我需要发布任何进一步的信息,请告诉我
答案 0 :(得分:2)
最可能的问题是你的语言环境。 PHP将尝试按给定顺序设置区域设置,设置它可以找到的第一个区域。如果pt_BR
未在您的系统上使用UTF-8,则您的结果将不会被UTF-8编码。由于您尝试pt_BR.utf-8
作为第二选择,因此PHP可能更喜欢使用非UTF-8版本。
检查您安装的区域设置:
$ locale -a
对于Windows,请看这里:
https://msdn.microsoft.com/en-us/library/39cwe7zf%28v=vs.90%29.aspx
(未经证实的信息,我不知道是否有更多Windows-y方式可以做到这一点。)
首先选择UTF-8语言环境:
setlocale(LC_ALL, 'pt_BR.utf-8', 'pt_BR', 'portuguese-brazilian');
测试实际选择的区域设置:
echo setlocale(..);