PHP函数ord()与str_split()搭配显示中文编码值

一直很想知道中文的gb2312编码值,直到看见网上一篇文章关于获取utf-8中文的机内码,才知道原来ord()函数还有这种绝妙搭配。

str_split()是一个将字符串转换为数组的函数,原型说明array str_split ( string $string [, int $split_length= 1 ] ),返回值:如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符。

而从php手册,我们知道ord()函数是返回字符的 ASCII 码值。而gb2312是兼容ASCII码的,是有两个字节的ASCII码组成(这个网上有详细原理),那一个gb2312汉字就是两个字符。

下面就来看看这个组合,还利用了foreach函数。保存成gb2312格式。

$cnstr = "人";

$arr = str_split($cnstr);

foreach ($arr as $value){

  echo ord($value);

}

 

测试一下,显示的是不是200 203,如果再利用php函数decbin(),例:echo decbin(ord($value));就可以转换为二进制机内码。当然还可以批量转换。不过就要处理空白字符,用正则替换。

当然utf8编码值获得是一个道理,只不过变成处理三个字节。不要只以为ord()函数只能处理字母哦。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>