php编码问题 phpstrlen 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 echo mb_strlen("星",'gbk');1 echo strlen("星")输出的是3表示你的程序文件保存成了 utf-8 编码的了 在strlen计算时,对待一个UTF8的中文字符是3个长度这是固定值,不必理会为什么.因为我也不知道. 在utf-8编码下,一个汉字占3个字节,所以返回3. <?php$str = '我';echo strlen($str).PHP_EOL;$encode = mb_detect_encoding($str, array("ASCII","UTF-8","GB2312","GBK","BIG5")); echo $encode; <meta http-equiv="content-type" content="textml; charset=gbk">echo strlen("星");我的不管是 utf-8 还是 gbk都是输出3重装后两个都是输出 2我彻底凌乱了 为什么echo mb_strlen("星",'gbk'); 输出是1echo mb_strlen("星",‘utf-8’); 我输出的是1 echo strlen("星");怎样在utf-8下输出3在gbk下输出2 将你的文件保存为utf-8编码就是在utf-8下。保存为ANSI格式就是gbk下。 <meta http-equiv="content-type" content="textml; charset=gbk">不是这个编码,而是你的php文件保存时的编码。UTF8 中文是3个字符GBK 中文是2个字符 请问你这个软件叫什么名字,我也想下载我之前那些代码都是用Visual Studio 2013 写的,再把后缀名改为php,经常出现一些奇怪的问题 最后一个小疑问echo mb_strlen("星",'gbk');utf-8 下 输出 2ansi 下 输出 1echo mb_strlen("星",'utf-8');utf-8 下 输出 1ansi 下 输出 1这个是怎么一回事?? <meta http-equiv="content-type" content="textml; charset=gbk">不可以转码吗? 不可以!<meta http-equiv="content-type" content="textml; charset=gbk">只是通知浏览器用 charset 指定的字符集解释内容如果你的程序文件是 utf-8 的,那么声明 charset=gbk 只会导致乱码而没有 <meta http-equiv="content-type" content="textml; charset=gbk"> 反而会因浏览器的自动识别功能,不出现乱码 设置文件的编码和声明charset是不同的,如果需要设置文件编码,一般的软件就可以解决,如notepad++ echo mb_strlen("星",'gbk');utf-8 下 输出 2ansi 下 输出 1echo mb_strlen("星",'utf-8');utf-8 下 输出 1ansi 下 输出 1这个是怎么一回事?? 请问你这个软件叫什么名字,我也想下载我之前那些代码都是用Visual Studio 2013 写的,再把后缀名改为php,经常出现一些奇怪的问题editplus 關於mb_strlen 可以看看這裡http://developer.51cto.com/art/201105/263103.htm 可以这样理解。echo mb_strlen("星",'gbk');utf-8 下 输出 2 // 一个中文在utf-8下占三个字节,在gbk下占两个字节, 以gbk算的话,就是3/2 = 1.5个字符,半个字符也算一个,所以输出2ansi 下 输出 1 echo mb_strlen("星",'utf-8');utf-8 下 输出 1 ansi 下 输出 1 // 这里就是2/3 小于1,也是按1算。所以用mb_strlen 检测字符串包含的字符数时,编码统一就不会有问题了。 不同的环境中出现了不同的结果,这是因为你错误的使用了参数造成的!mb 系列函数的 encoding 参数用于指明被操作的字符串的字符集,给错了自然结果也就错了所以在使用时应用 mb_detect_encoding 或 mb_check_encoding 函数取得字符串实际的字符集$s = '星';$charset = mb_detect_encoding($s, 'utf-8, gbk');echo mb_strlen($s, $charset);$charset = mb_check_encoding($s, 'utf-8') ? 'utf-8' : 'gbk';echo mb_strlen($s, $charset);由于 mb_detect_encoding 容易出现误判,所以新增了比较准确的 mb_check_encoding 函数 请教PHP乱码问题(GBK编码和UTF-8编程) ->,=>这两个是什么运算 这几个字条集的关系 多条件搜索+伪静态规则+分页方案 $_SESSION 问题 一个文件权限的控制问题,nginx服务器 关于自定义函数的小问题 gif图像无法生成,也找不到支持php4.3.4的gd 库 文本(text)中的查询 如何设置COOKIE使得任何IE都可以访问?? yii中使用ar可以进行嵌套查询吗? php 怎么按照指定ID修改数据库内数据
echo mb_strlen("星",'gbk');1
表示你的程序文件保存成了 utf-8 编码的了
这是固定值,不必理会为什么.
因为我也不知道.
<?php
$str = '我';
echo strlen($str).PHP_EOL;
$encode = mb_detect_encoding($str, array("ASCII","UTF-8","GB2312","GBK","BIG5"));
echo $encode;
echo strlen("星");我的不管是 utf-8 还是 gbk都是输出3
重装后两个都是输出 2
我彻底凌乱了
echo mb_strlen("星",'gbk'); 输出是1
echo mb_strlen("星",‘utf-8’); 我输出的是1
怎样在utf-8下输出3
在gbk下输出2
不是这个编码,而是你的php文件保存时的编码。
UTF8 中文是3个字符
GBK 中文是2个字符
请问你这个软件叫什么名字,我也想下载
我之前那些代码都是用Visual Studio 2013 写的,再把后缀名改为php,经常出现一些奇怪的问题
echo mb_strlen("星",'gbk');
utf-8 下 输出 2
ansi 下 输出 1echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1这个是怎么一回事??
不可以转码吗?
<meta http-equiv="content-type" content="textml; charset=gbk">
只是通知浏览器用 charset 指定的字符集解释内容
如果你的程序文件是 utf-8 的,那么声明 charset=gbk 只会导致乱码
而没有 <meta http-equiv="content-type" content="textml; charset=gbk"> 反而会因浏览器的自动识别功能,不出现乱码
utf-8 下 输出 2
ansi 下 输出 1echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1这个是怎么一回事??
请问你这个软件叫什么名字,我也想下载
我之前那些代码都是用Visual Studio 2013 写的,再把后缀名改为php,经常出现一些奇怪的问题editplus
echo mb_strlen("星",'gbk');
utf-8 下 输出 2 // 一个中文在utf-8下占三个字节,在gbk下占两个字节, 以gbk算的话,就是3/2 = 1.5个字符,半个字符也算一个,所以输出2
ansi 下 输出 1 echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1 // 这里就是2/3 小于1,也是按1算。所以用mb_strlen 检测字符串包含的字符数时,编码统一就不会有问题了。
mb 系列函数的 encoding 参数用于指明被操作的字符串的字符集,给错了自然结果也就错了
所以在使用时应用 mb_detect_encoding 或 mb_check_encoding 函数取得字符串实际的字符集
$s = '星';
$charset = mb_detect_encoding($s, 'utf-8, gbk');
echo mb_strlen($s, $charset);$charset = mb_check_encoding($s, 'utf-8') ? 'utf-8' : 'gbk';
echo mb_strlen($s, $charset);由于 mb_detect_encoding 容易出现误判,所以新增了比较准确的 mb_check_encoding 函数