php 动态设置utf8,PHP对GB编码动态转UTF-8几种方法评测
以下为引用的内容:
require_once (\"func_ip.php\");
function u2utf8($c) {
$str = \"\";
if ($c < 0x80) {
$str .= $c;
} elseif ($c < 0x800) {
$str .= chr(0xC0 | $c >> 6);
$str .= chr(0x80 | $c & 0x3F);
} elseif ($c < 0x10000) {
$str .= chr(0xE0 | $c >> 12);
$str .= chr(0x80 | $c >> 6 & 0x3F);
$str .= chr(0x80 | $c & 0x3F);
} elseif ($c < 0x200000) {
$str .= chr(0xF0 | $c >> 18);
$str .= chr(0x80 | $c >> 12 & 0x3F);
$str .= chr(0x80 | $c >> 6 & 0x3F);
$str .= chr(0x80 | $c & 0x3F);
}
return $str;
}
function GB2UTF8_SQL($strGB) {
if (!trim($strGB)) return $strGB;
$strRet = \"\";
$intLen = strlen($strGB);
for ($i = 0; $i < $intLen; $i++) {
if (ord($strGB{$i}) > 127) {
$strCurr = substr($strGB, $i, 2);
$intGB = hexdec(bin2hex($strCurr)) - 0x8080;
$strSql = \"SELECT code_unicode FROM nnstats_gb_unicode
WHERE code_gb = \".$intGB.\" LIMIT 1\"
;
$resResult = mysql_query($strSql);
if ($arrCode = mysql_fetch_array($resResult)) $strRet .= u2utf8($arrCode[\"code_unicode\"]);
else $strRet .= \"??\";
$i++;
} else {
$strRet .= $strGB{$i};
}
}
return $strRet;
}
function GB2UTF8_FILE($strGB) {
if (!trim($strGB)) return $strGB;
$arrLines = file(\"gb_unicode.txt\");
foreach ($arrLines as $strLine) {
$arrCodeTable[hexdec(substr($strLine, 0, 6))] = hexdec(substr($strLine, 7, 6));
}
$strRet = \"\";
$intLen = strlen($strGB);
for ($i = 0; $i < $intLen; $i++) {
if (ord($strGB{$i}) > 127) {
$strCurr = substr($strGB, $i, 2);
$intGB = hexdec(bin2hex($strCurr)) - 0x8080;
if ($arrCodeTable[$intGB]) $strRet .= u2utf8($arrCodeTable[$intGB]);
else $strRet .= \"??\";
$i++;
} else {
$strRet .= $strGB{$i};
}
}
return $strRet;
}
function EncodeIp($strDotquadIp) {
$arrIpSep = explode(\'.\', $strDotquadIp);
if (count($arrIpSep) != 4) return 0;
$intIp = 0;
foreach ($arrIpSep as $k => $v) $intIp += (int)$v * pow(256, 3 - $k);
return $intIp;
//return sprintf(\'%02x%02x%02x%02x\', $arrIpSep[0], $arrIpSep[1], $arrIpSep[2], $arrIpSep[3]);
}
function GetMicroTime() {
list($msec, $sec) = explode(\" \", microtime());
return ((double)$msec + (double)$sec);
}
for ($i = 0; $i < 100; $i++) { // 随机产生100个ip地址
$strIp = mt_rand(0, 255).\".\".mt_rand(0, 255).\".\".mt_rand(0, 255).\".\".mt_rand(0, 255);
$arrAddr[$i] = ip2addr(EncodeIp($strIp));
}
$resConn = mysql_connect(\"localhost\", \"netnest\", \"netnest\");
mysql_select_db(\"test\");
// 测评MySQL查询的编码转换
$dblTimeStart = GetMicroTime();
for ($i = 0; $i < 100; $i++) {
$strUTF8Region = GB2UTF8_SQL($arrAddr[$i][\"region\"]);
$strUTF8Address = GB2UTF8_SQL($arrAddr[$i][\"address\"]);
}
$dblTimeDuration = GetMicroTime() - $dblTimeStart;
// 测评结束并输出结果
echo $dblTimeDuration; echo \"\r\n\";
// 测评文本文件查询的编码转换
$dblTimeStart = GetMicroTime();
for ($i = 0; $i < 100; $i++) {
$strUTF8Region = GB2UTF8_FILE($arrAddr[$i][\"region\"]);
$strUTF8Address = GB2UTF8_FILE($arrAddr[$i][\"address\"]);
}
$dblTimeDuration = GetMicroTime() - $dblTimeStart;
// 测评结束并输出结果
echo $dblTimeDuration; echo \"\r\n\";
?>
php 动态设置utf8,PHP对GB编码动态转UTF-8几种方法评测相关推荐
- python字符串成熟编码_python字符串转公式两种方法获取网页编码python版
在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...
- 安卓导航车机root方法_安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!...
最近,iPhone 充电提示音火了!上期,我们分享了 iPhone 手机自定义设置充电提示音的方法,安卓用户表示也想要~苹果手机有的,安卓手机也必须有!今天,我们就为大家分享一下安卓手机设置充电提示音 ...
- 计算机设置链接在哪里,本地连接在哪里找【四种方法】
本地连接通常是在电脑需要进行有关网络操作时才会涉及到,很多人表示,在电脑禁用本地连接后,再想启动时却无法找到本地连接,或者是不能快速找到本地连接.那么,电脑的本地连接在哪里找呢?可能一些人知道,但是不 ...
- 安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!
最近,iPhone 充电提示音火了!上期,我们分享了 iPhone 手机自定义设置充电提示音的方法,安卓用户表示也想要~苹果手机有的,安卓手机也必须有!今天,我们就为大家分享一下安卓手机设置充电提示音 ...
- mysql数据库设置连接数_MySQL数据库之修改MYSQL最大连接数的3种方法分享
本文主要向大家介绍了MySQL数据库之修改MYSQL最大连接数的3种方法分享,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 方法一:进入MYSQL安装目录 打开MYSQL配置文件 ...
- AndroidStudio_android中实现图片动态设置图片的位置以及图片动态缩放---Android原生开发工作笔记234
可以通过下面的代码进行设置 <ImageViewandroid:id="@+id/face_img"android:layout_width="wrap_conte ...
- nginx做小程序外链跳转_小程序跳转外部链接怎么设置,实现小程序跳转外链的两种方法...
小程序跳转到外部链接有很多种类型,包括小程序跳转到APP,小程序跳转到小程序,小程序跳转到公众号,小程序跳转到网页等.由于小程序跳转的对象比较多,各自的规则又不一样,因此小程序跳转外部链接是用户咨询较 ...
- laydate动态设置MarkMinMax
laydate动态设置自定义重要日子,以及动态设备最小与最大可选日期 版本:laydate5.0.2 独立版,layui组件版仅引入laydata.js方式有所区别,具体可参考https://www. ...
- 移动布局+百分比布局+em+rem+动态设置根元素fontSize
流式布局 移动端大量使用CSS3盒子模型 box-sizing box-sizing: border-box; 很重要 移动端特殊样式 如何动态设置html的 font-size 开始 js动态设置代 ...
最新文章
- ORB-SLAM3中的ORB提取
- JS实现一键分享功能
- mysql 分组_mysql分组查询(总结)
- 滑动窗口最大值--单调队列
- jenkins 自带环境变量
- go channel 缓冲区最大限制_一起攻克面试难关:Go 面试每天一篇(第 40 天)
- weex android app例子,weex中修改android app图标和欢迎页
- C# Weifenluo教程
- ASP.Net学习笔记010--加法计算器
- windows dns配置文件在哪_搭建基于Windows的域服务与文件服务(一)——搭建Windows域服务...
- spring 配置项 随机_Spring Boot--从配置文件中获取随机数
- WebShell -- 开启3389服务
- php api权限,如何设计RESTful的API权限
- 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
- 微信小程序实现登录注册页面
- 重来之大学版|卸负篇-对自己大学很失望怎么办?觉得自己大学很不好怎么办?刚到大学不适应怎么办?
- 沐风老师3dsMax手把手教系列:椅子建模(款式001)
- Java学习005 #Java编程进行时01#
- Poemscape|Beta阶段事后诸葛亮
- java 对 Map的遍历
热门文章
- 【小程序】刘一哥课堂随机点名提问神器V1.0(附源程序)
- Flutter之window系统下配置开发环境以及在Android Studio里面运行hello word
- linux 配置path
- 链表之删除链表中间节点
- oracle 删除空间不足,oracle表空间扩容、创建、删除(解决表空间不足问题)
- 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
- 被AI人机疯狂单杀?王者荣耀AI“绝悟”亲测体验
- access的ole对象换成mysql_ACCESS的Ole对象读取写入
- 重磅公开!36个高考数学破题大招
- 带你见识不一样的世界,这5部豆瓣纪录片不可错过!