【发布时间】:2012-08-08 12:05:20
【问题描述】:
我有一个像这样的简单代码:
echo strlen('Grækenland');
它返回 11 而不是预期的 10
服务器在丹麦,区域设置为丹麦,但它仍然返回 11...
【问题讨论】:
-
mb_strlen() 给你 10 吗?
-
试试
echo mb_strlen('Grækenland', 'UTF-8');
标签: php
我有一个像这样的简单代码:
echo strlen('Grækenland');
它返回 11 而不是预期的 10
服务器在丹麦,区域设置为丹麦,但它仍然返回 11...
【问题讨论】:
echo mb_strlen('Grækenland', 'UTF-8');
标签: php
strlen 是朴素的 PHP 核心函数之一,它将字符串理解为字节数组并假设一个字节 == 一个字符。使用 mb_strlen 和正确的编码参数,根据字符串的编码实际计算字符数。
【讨论】:
æ 是 2 个字节,而其他字符在该编码中是 1 个字节长,这给出了 11 .
<?php
echo mb_strlen('Grækenland', 'utf8');
?>
【讨论】: