关于汉字gbk编码
汉字的GBK编码也是把一个汉字用两个字节来表示,其首字节对应0x81-0xFE(即129-224),尾字节对应除掉(0x7F)的0x40-oxFE(即64-126和128-224)
【关于汉字gbk编码】我们一般判断一个字是否是汉字都是根据其首字节来判断,我们来看汉字的GBK编码首字节的起始编码0x81,其二进制即为0000 1000 0000 0000, 可见若一个字符的二进制逻辑与0x81之后为0时,该字符一定小于0x81,此时该字符必定不是汉字,反之,该字符应该是一个汉字的首字节。
结合以上原理就不难理解一个中英文混合字符串的截取的常用代码:
function gb_substr($str, $start, $len)
{
$s = '';
$j = 0;
for ($i=0;
$iif (ord($str[$i]) & 0x81 != 0) {//或者ord($str[$i]) > '0x80'
$t = $str[$i].$str[$i+1];
if (($i >= $start) && ($i+1 < $start+$len)) $s.= $t;
$i++;
} else {
$t = $str[$i];
if (($i >= $start) && ($i < $start+$len)) $s.= $t;
}
if ($i >= $start+$len) break;
}
return $s;
}
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- 杭电oj——2030汉字统计
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)
- 《声之形》