php - 使用 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 断了我的弦?没有它,它工作得很好
解决方案
看到关于使用的评论和编辑(未在原始帖子中显示)strtolower()
,手册指出:
请注意,“字母”由当前语言环境决定。这意味着,例如在默认的“C”语言环境中,诸如变音符号-A (Ä) 之类的字符将不会被转换。
另一方面,mb_strtolower()显示:
与 strtolower() 相比,“字母”由 Unicode 字符属性确定。因此,此函数的行为不受语言环境设置的影响,它可以转换任何具有“字母”属性的字符,例如 A-umlaut (Ä)。
推荐阅读
- r - dplyr sample_n 返回表中不同的行数
- postgresql - int4range, NOT IN (VALUES), ON NOT (with LEFT JOIN) in QueryDSL 4
- r - Cox 模型一致性值与 mlr 计算的 c-index 不同
- ruby-on-rails - 控制器请求重复故障排除
- macros - Elixir:AST扩展期间未定义的变量
- c++ - 共享内存中的 C++ 二维数组(基于命令行参数)
- mysql - 如何解决 MySQL `ERROR 1205 (HY000): Lock wait timeout exceeded; 尝试重新启动事务`
- wordpress - 自定义 Wordpress 页面,某些 div 中的用户个人资料信息
- sql - 将 SQL 中的表透视到具有最大唯一观察数的列
- mysql - 存储过程 MySQL——按订单数量的会员折扣