我的网站页面中有90%使用utf8编码特性来编译数据表格。
$a[] = array_map('utf8_encode', $item);
在旧版本的php 8.0中一切都很好,但在新版本中,当$item($item是一个数组)的值为空时,它会给出一个错误。
有什么有效的替代方案吗?
我的网站页面中有90%使用utf8编码特性来编译数据表格。
$a[] = array_map('utf8_encode', $item);
在旧版本的php 8.0中一切都很好,但在新版本中,当$item($item是一个数组)的值为空时,它会给出一个错误。
有什么有效的替代方案吗?
utf8_encode
已经被弃用,并将在PHP 9中删除。https://php.watch/versions/8.2/utf8_encode-utf8_decode-deprecated
因此,替代方法可以是:$oldSample = ["\x5A\x6F\xEB"];
$result= array_map
(
function ($item){
return mb_convert_encoding($item, "UTF-8", mb_detect_encoding($item));
},
$oldSample
);
var_dump($result);
Documentation:
array_map(fn($item) => mb_convert_encoding($item, "UTF-8", mb_detect_encoding($item)), $oldSample);
- jonlink使用mb_convert_encoding函数将ISO-8859-1编码转换为UTF-8编码。
示例:
$iso = "\x5A\x6F\xEB";
echo mb_convert_encoding($iso, 'UTF-8', 'ISO-8859-1'); // Zoë
我只是在执行array_map('utf8_encode', $item)之前做了这个:
foreach(array_keys($item) as $key)
$item[$key] = utf8_encode($item[$key] ?? '');
它运行得很好。
utf8_encode
已被弃用,并将在PHP 9中删除。 - simon.ro
$item
初始是否为 ISO 编码?此外,it gives me an error
是准确的还是一个弃用通知?请添加信息。 - user3783243utf8_encode
要求一个非空字符串。因此,需先准备好数组,并将所有的 NULL 转换为空字符串array_map('strval', $item)
或过滤掉 NULL 值array_filter()
。 - Foobar