设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
PHP中实现中文字符进制转换原理分析
返回列表
查看:
1578
|
回复:
0
PHP中实现中文字符进制转换原理分析
[复制链接]
bewin83
当前离线
积分
7520
2500
主题
2513
帖子
7520
积分
论坛元老
论坛元老, 积分 7520, 距离下一级还需 9992479 积分
论坛元老, 积分 7520, 距离下一级还需 9992479 积分
积分
7520
发消息
电梯直达
楼主
发表于 2018-2-14 08:31:54
|
只看该作者
|
倒序浏览
|
阅读模式
一,中文字符转十进制原理分析
GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下
[U]复制代码[/U] 代码如下:
$string = "不要迷恋哥";
$length = strlen($string);
for($i=0;$i127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
由于一个汉字为两个字符组成,通过ord()函数获取字符的ASCII值如果大于127时,就可以确定当前字符为一个汉字的前半部分,还需要获取汉字的后半部分。当然,这种判断的方法要结合具体的开发环境,如果存在ASCII值大于127的单个字符,这种方法判断显然就不正确。
PHP实现中文字符转十进制的原理就是通过for循环的方法获取一个汉字的二个字符,然后使用ord()函数把各字符转换为十进制。如上分别是:不 [178 187] 要 [210 170] 迷 [195 212] 恋 [193 181] 哥 [184 231]
二,中文字符转十六进制原理分析
使用UltraEdit开发工具可以直接查看中文字符的十六进制,如下图
如,查看“不要迷恋哥”这五个字的十六进制
从上面的图可以知道各个汉字对应该的十六进制字符分别是:不 B2BB 要 D2AA 迷 C3D4 恋 C1B5 哥 B8E7
PHP 实现中文字符转十六进制的原理就是首先使用ord()函数取出各个中文字符的十进制,具体可查看[PHP函数篇掌握ord()与chr()函数应用],然后使用dechex()函数把各个中文字符转化为十六进制
实例源代码
[U]复制代码[/U] 代码如下:
$string = "不要迷恋哥";
$length = strlen($string);
echo $string;
$result = array();
//十进制
for($i=0;$i127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
//十六进制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = dechex($dec[0])." ".dechex($dec[1]);
}
var_dump($strings);
结果如下图
通过上面的方法实现把中文字符转换为十六进制,输出结果可对比使用UltraEdit开发工具获取的十六进制。
三,中文字符转二进制和八进制原理分析
实现中文字符转二进制和八进制与上面的十六进制转换原理一样,只是转换的函数不同,结合上面的实例代码,实现如下
中文字符转二进制,方法如下
[U]复制代码[/U] 代码如下:
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decbin($dec[0])." ".decbin($dec[1]);
}
var_dump($strings);
结果如下:
中文字符转八进制,方法如下
[U]复制代码[/U] 代码如下:
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = decoct($dec[0])." ".decoct($dec[1]);
}
结果如下:
了解PHP实现中文字符进制转换原理,再通过PHP内置函数urldecode()就可以把十六进制的字符串通过组合转换为正常的中文汉字,请关注下一期中文字符编码研究系列之urldecode()与urlencode()函数字符编码原理。
您可能感兴趣的文章:
用PHP实现将GB编码转换为UTF8
php utf-8转unicode的函数
PHP UTF8编码内的繁简转换类
PHP通过iconv将字符串从GBK转换为UTF8字符集
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
支持生僻字且自动识别utf-8编码的php汉字转拼音类
PHP如何实现Unicode和Utf-8编码相互转换
PHP二进制与字符串之间的相互转换教程
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
PHP实现UTF8二进制及明文字符串的转化功能示例
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端