首页 > 解决方案 > 使用 strtolower 的口音和 UTf-8 php

问题描述

我读了一个带有 simpleXlsx 解析器插件的 XLSX。

我的第一行 excel 是标题,我需要阅读它。

在我的 excel 中,我有例如 3 列,第一行的标题名称为:

Columns_1      Columns_with_accent_à       Columns_3

第二列有一个重音:à

我的编辑器处于 UTF-8 模式,我的 php 页面设置了编码 UTF-8,我没有在我的页面上使用任何 html(它是仅在 php 中导入的页面)但我得到了这个 var 转储:

<?php

header('Content-type: text/html; charset=UTF-8');

$xlsx = SimpleXLSX::parse("file.xlsx");

foreach( $xlsx->rows() as $indexrow => $r ) {   

        if ( $indexrow == 0 ) {

            // HEADER

            var_dump(strtolower($r[1])); //second column

            //output WRONG:     Columns_with_accent_�

        }
}

?>

任何想法 strtolower 断了我的弦?没有它,它工作得很好

标签: phpencodingxlsx

解决方案


看到关于使用的评论和编辑(未在原始帖子中显示)strtolower(),手册指出:

请注意,“字母”由当前语言环境决定。这意味着,例如在默认的“C”语言环境中,诸如变音符号-A (Ä) 之类的字符将不会被转换。

另一方面,mb_strtolower()显示:

与 strtolower() 相比,“字母”由 Unicode 字符属性确定。因此,此函数的行为不受语言环境设置的影响,它可以转换任何具有“字母”属性的字符,例如 A-umlaut (Ä)。


推荐阅读