首页 后端开发 php教程 新手关于mb_strlen的有关问题

新手关于mb_strlen的有关问题

Jun 13, 2016 am 10:45 AM
character encoding mb quot strlen

新手关于mb_strlen的问题。
不太明白这三次调用的返回值。。

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?phpecho mb_strlen("我的名字") . "<br/>"; //12echo mb_strlen("我的名字","UTF-8") . "<br>"; //4echo mb_strlen("我的名字","GBK") //6?>
登录后复制


代码保存在l.php里面,文件编码为utf8

关于mb_strlen 的第二个encoding参数。PHP手册上这么写的:

"The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used."
我想知道那个internal character encoding是指哪个编码,在哪里配置的。

还有,对于这个函数的返回值 是这么写的
"Returns the number of characters in string str having character encoding encoding . A multi-byte character is counted as 1. "
多字节的字符按1来计算。
那为干什么第一次调用 会返回12,第二次调用居然返回6了。。 不太明白,希望帮解释 一下,谢谢了!

------解决方案--------------------
探讨
哦对,还有一个小问题。 如果PHP里面要用到别的DLL里面的函数 ,是不是等将这个DLL复制到 system32下面,然后再在php.ini里面加上
extension=php_fdf.dll 这样的代码才可以?

------解决方案--------------------
PHP code
echo mb_strlen("我的名字") . "<br>"; //12echo mb_strlen("我的名字","UTF-8") . "<br>"; //4echo 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>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1419
52
Laravel 教程
1313
25
PHP教程
1264
29
C# 教程
1237
24
1g内存是多少MB 1g内存是多少MB Mar 16, 2023 pm 04:19 PM

1g内存是1024MB。g全称“GB”,中文意思为“吉字节”,而MB是指“兆字节”;GB和MB都是常使用在标示电脑硬盘、存储器等具有较大容量的储存媒介之储存容量,GB和MB换算率约等于1000(1024),即“1GB=1024MB”。

1MB的存储容量相当于多少字节 1MB的存储容量相当于多少字节 Mar 03, 2023 pm 05:42 PM

1MB的存储容量相当于2的20次方个字节,即1048576个字节。MB是计算机中的一种储存单位,读作“兆”;因为1MB等于1024KB,而1KB等于1024B(字节),因此1MB等于1048576(1024 *1024)个字节。

1g等于多少mb内存容量 1g等于多少mb内存容量 Feb 03, 2023 pm 03:55 PM

1g等于1024MB内存容量。g全称“GB”,中文意思为“吉字节”,是一种十进制的信息计量单位,常使用在标示电脑硬盘、存储器等具有较大容量的储存媒介之储存容量。GB和MB换算率约等于1000(1024),即“1GB = 1024MB”。

使用java的Character.isDefined()函数判断字符是否为已定义字符 使用java的Character.isDefined()函数判断字符是否为已定义字符 Jul 25, 2023 am 10:33 AM

使用Java的Character.isDefined()函数判断字符是否为已定义字符在Java编程中,有时候需要判断一个字符是否为已定义的字符。为了方便,Java提供了Character类的isDefined()函数,可以帮助我们快速判断一个字符是否为已定义字符。本文将介绍这个函数的使用方法,并提供一些代码示例。Character类是Java中表示单个字符的

Java文档解读:Character类的isAlphabetic()方法详解 Java文档解读:Character类的isAlphabetic()方法详解 Nov 04, 2023 am 10:05 AM

Java文档解读:Character类的isAlphabetic()方法详解一、概述在Java的Character类中,isAlphabetic()方法用于判断给定字符是否是一个字母字符。它返回一个布尔值,true表示给定字符是一个字母字符,false表示给定字符不是一个字母字符。本篇文章将对这个方法的使用和原理进行详细解析,并提供代码示例帮助读者更好地理解

Java使用Character类的isLetterOrDigit()函数判断字符是否是字母或数字 Java使用Character类的isLetterOrDigit()函数判断字符是否是字母或数字 Jul 24, 2023 pm 02:45 PM

Java使用Character类的isLetterOrDigit()函数判断字符是否是字母或数字在Java编程中,我们经常需要对字符进行一些操作和判断。其中一个常见的需求是判断一个字符是否是字母或数字。Java提供了Character类的isLetterOrDigit()函数来帮助我们实现这个功能。Character类是一个包装类,用于对字符进行操作和判断。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

使用java的Character.isLetterOrDigit()函数判断字符是否为字母或数字 使用java的Character.isLetterOrDigit()函数判断字符是否为字母或数字 Jul 25, 2023 pm 04:22 PM

使用Java的Character.isLetterOrDigit()函数判断字符是否为字母或数字在Java中,我们经常需要判断一个字符是否为字母或者数字。为了简化这个过程,Java提供了一个内置函数Character.isLetterOrDigit(),可以帮助我们快速完成这个判断。Character.isLetterOrDigit()函数接受一个字符作为参

See all articles