新手关于mb_strlen的问题。
不太明白这三次调用的返回值。。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<?php
echo mb_strlen("我的名字") . "<br/>"; //12
echo mb_strlen("我的名字","UTF-8") . "<br/>"; //4
echo mb_strlen("我的名字","GBK") //6
?>
echo mb_strlen("我的名字") . "<br>"; //12
echo mb_strlen("我的名字","UTF-8") . "<br>"; //4
echo mb_strlen("我的名字","GBK") //6
<br><font color="#e78608">------解决方案--------------------</font><br>
首先你的文件编码一定是utf-8,而且你的mb_internal_encoding是类似于ISO-8859-1<br>然后要知道1个utf8汉字为3字节,gb是2字节,mb_strlen把多字节字算作1,所以会得出<br><?php <br />echo mb_strlen("我的名字") . "<br>"; //未给定编码,按默认 ISO-8859-1 计算,一个utf8汉字为3<br>echo mb_strlen("我的名字","UTF-8") . "<br>"; //给定正确编码,一个汉字为1<br>echo mb_strlen("我的名字","GBK") //给定错误编码,GBK 一个汉字算2,但你的文件是utf8,所以为4 * 3 = 12字节 / 2 = 6个gbk字<br>?> <div class="clear"></div>
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号