以下为引用的内容:

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几种方法评测相关推荐

  1. python字符串成熟编码_python字符串转公式两种方法获取网页编码python版

    在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...

  2. 安卓导航车机root方法_安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!...

    最近,iPhone 充电提示音火了!上期,我们分享了 iPhone 手机自定义设置充电提示音的方法,安卓用户表示也想要~苹果手机有的,安卓手机也必须有!今天,我们就为大家分享一下安卓手机设置充电提示音 ...

  3. 计算机设置链接在哪里,本地连接在哪里找【四种方法】

    本地连接通常是在电脑需要进行有关网络操作时才会涉及到,很多人表示,在电脑禁用本地连接后,再想启动时却无法找到本地连接,或者是不能快速找到本地连接.那么,电脑的本地连接在哪里找呢?可能一些人知道,但是不 ...

  4. 安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!

    最近,iPhone 充电提示音火了!上期,我们分享了 iPhone 手机自定义设置充电提示音的方法,安卓用户表示也想要~苹果手机有的,安卓手机也必须有!今天,我们就为大家分享一下安卓手机设置充电提示音 ...

  5. mysql数据库设置连接数_MySQL数据库之修改MYSQL最大连接数的3种方法分享

    本文主要向大家介绍了MySQL数据库之修改MYSQL最大连接数的3种方法分享,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 方法一:进入MYSQL安装目录 打开MYSQL配置文件 ...

  6. AndroidStudio_android中实现图片动态设置图片的位置以及图片动态缩放---Android原生开发工作笔记234

    可以通过下面的代码进行设置 <ImageViewandroid:id="@+id/face_img"android:layout_width="wrap_conte ...

  7. nginx做小程序外链跳转_小程序跳转外部链接怎么设置,实现小程序跳转外链的两种方法...

    小程序跳转到外部链接有很多种类型,包括小程序跳转到APP,小程序跳转到小程序,小程序跳转到公众号,小程序跳转到网页等.由于小程序跳转的对象比较多,各自的规则又不一样,因此小程序跳转外部链接是用户咨询较 ...

  8. laydate动态设置MarkMinMax

    laydate动态设置自定义重要日子,以及动态设备最小与最大可选日期 版本:laydate5.0.2 独立版,layui组件版仅引入laydata.js方式有所区别,具体可参考https://www. ...

  9. 移动布局+百分比布局+em+rem+动态设置根元素fontSize

    流式布局 移动端大量使用CSS3盒子模型 box-sizing box-sizing: border-box; 很重要 移动端特殊样式 如何动态设置html的 font-size 开始 js动态设置代 ...

最新文章

  1. ORB-SLAM3中的ORB提取
  2. JS实现一键分享功能
  3. mysql 分组_mysql分组查询(总结)
  4. 滑动窗口最大值--单调队列
  5. jenkins 自带环境变量
  6. go channel 缓冲区最大限制_一起攻克面试难关:Go 面试每天一篇(第 40 天)
  7. weex android app例子,weex中修改android app图标和欢迎页
  8. C# Weifenluo教程
  9. ASP.Net学习笔记010--加法计算器
  10. windows dns配置文件在哪_搭建基于Windows的域服务与文件服务(一)——搭建Windows域服务...
  11. spring 配置项 随机_Spring Boot--从配置文件中获取随机数
  12. WebShell -- 开启3389服务
  13. php api权限,如何设计RESTful的API权限
  14. 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
  15. 微信小程序实现登录注册页面
  16. 重来之大学版|卸负篇-对自己大学很失望怎么办?觉得自己大学很不好怎么办?刚到大学不适应怎么办?
  17. 沐风老师3dsMax手把手教系列:椅子建模(款式001)
  18. Java学习005 #Java编程进行时01#
  19. Poemscape|Beta阶段事后诸葛亮
  20. java 对 Map的遍历

热门文章

  1. 【小程序】刘一哥课堂随机点名提问神器V1.0(附源程序)
  2. Flutter之window系统下配置开发环境以及在Android Studio里面运行hello word
  3. linux 配置path
  4. 链表之删除链表中间节点
  5. oracle 删除空间不足,oracle表空间扩容、创建、删除(解决表空间不足问题)
  6. 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
  7. 被AI人机疯狂单杀?王者荣耀AI“绝悟”亲测体验
  8. access的ole对象换成mysql_ACCESS的Ole对象读取写入
  9. 重磅公开!36个高考数学破题大招
  10. 带你见识不一样的世界,这5部豆瓣纪录片不可错过!