PHP Enconding - 在 Portuguese-BR 中格式化 cedilla 无效

PHP Enconding - Formatting cedilla in Portuguese-BR is not working

我遇到了一个与巴西葡萄牙语中的字符集格式化词相关的问题,其中包含 cedilla。 当我将 setlocale 设置为 'portuguese-brazil' 并附有 utf-8 时,PHP 似乎不理解它。
如下图所示,我尝试将当前月份的英语转换为葡萄牙语:

如我们所见,上面的值应该向最终用户显示 Março(英文意思是 March)。 我尝试在葡萄牙语和此处浏览 Stack Overflow,但 none 这些问题和解决方案对我有用。

在我的 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">

我不知道如何解决这个问题,但我认为字符集似乎没有按预期工作。
谁能帮我解决这个问题?

如果我需要post任何进一步的信息,请告诉我

最有可能的问题是您的语言环境。 PHP 将尝试按给定顺序设置语言环境,设置它能找到的第一个。如果 pt_BR 未在您的系统上使用 UTF-8,则您的结果将不会采用 UTF-8 编码。由于您尝试将 pt_BR.utf-8 作为第二选择,因此 PHP 可能更喜欢非 UTF-8 版本。

  1. 检查您安装的语言环境:

    $ locale -a
    

    对于Windows,看这里:
    https://msdn.microsoft.com/en-us/library/39cwe7zf%28v=vs.90%29.aspx
    (未经证实的信息,不知道有没有更Windows-y的方法)

  2. 首选 UTF-8 语言环境:

    setlocale(LC_ALL, 'pt_BR.utf-8', 'pt_BR', 'portuguese-brazilian');
    
  3. 测试实际选择的语言环境:

    echo setlocale(..);