【发布时间】:2011-07-05 22:42:31
【问题描述】:
当我在字符串上运行 PHP 函数 strlen() 和 mb_strlen() 时,它们都返回错误的字符数。
这是我正在使用的一段代码...
$foo = mb_strlen($itemDetails['ITEMDESC'], 'UTF-8');
echo $foo;
它告诉我这个刺痛 - “4½” Straight Iris Scissors”有 45 个字符长。它是 27 个。
它还告诉我这个字符串 - “Infant Heel Warmer, No Adhesive Attachment Pad, 100/cs”是 54,这是正确的。
我认为它与字符编码有一些问题,我认为一切都应该是 UTF-8。我已经尝试为 mb_strlen() 提供几种不同的字符编码类型,它们都返回带有这些非标准字符的字符串的奇怪计数。
我不知道为什么会这样。
【问题讨论】:
-
您的数据来自哪里?尝试将
iconv_set_encoding("internal_encoding", "UTF-8");添加到 PHP 脚本的顶部。 -
您是否尝试仅测量“4½”字符串长度?多长时间?