php对gb编码动态转utf-8编码的几种方法评测
日期:2007年7月26日 作者: 查看:[大字体 中字体 小字体]-
在《IP地址->地理位置转换的测评》一文中提到用ip2addr函数直接读取IP数据库文件是效率最高的,相比用MySQL数据库存储IP数据,用SQL查询是效率最低的。但是IP数据库文件QQWry.dat是GB2312编码的。现在我需要UTF-8编码的地理位置结果。如果用MySQL方法,可以在数据存入数据库时就转换为UTF-8编码,一劳永逸。但是QQWry.dat文件又无法修改,只能把ip2addr函数的输出结果再进行动态转换。
动态转换GB->UTF-8编码至少有四种方法:
用PHP的iconv扩展转换
用PHP的mb_string扩展转换
用对换表转换,对换表存储在MySQL数据库中
用对换表转换,对换表存储在文本文件中
前两种方法要服务器作了相应设置(编译安装了相应扩展)才能使用。我的虚拟主机没有这两个扩展,只好考虑后两种方法。前两个方法本文也不进行测评。
测评程序如下(func_ip.php参见《IP地址->地理位置转换的测评》一文):
<?php
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 - [1] [2] [3] [4] [5] [6] 下一页
-
- php对gb编码动态转utf-8编码的几种方法评测 相关文章:
- ·电子杂志的创编制作过程解析
- ·固定网页语言编码、字体、字号
- ·编程实例 asp.net传值简单例程
- ·Word文档图片插入小技巧 让后期编辑更省事
- ·用排版软件InDesign为长文件编排目录
- ·asp.net编程中实现 MD5 加密
- ·使用DW方便快捷编辑网页标签
- ·Flash AS以贪吃蛇小游戏为实例学习类编程
- ·XHTML编写网页代码的七条基本规范
- ·C#编程中的 New 关键词的几种用法
- php对gb编码动态转utf-8编码的几种方法评测 相关软件
- ·《红色警戒2》地图编辑器
- ·历史学家(精编版)
- ·经典电影电视改编小说合集
- ·《风之影》(精编版)
- ·《魔兽》地图:三界之争正式编年史 灭世2.0
- ·中国邮票--编号邮票图录
- ·编号邮票
- ·新编说文解字
- ·06《译林》小说全编
- ·新编手机指令(密码)大全
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:用.NET开发MSN聊天机器人
精品推荐
热点TOP10
- ·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
- ·学习教程:Java Annotation 高级应用
- ·Windows XP下PHP+MySQL环境搭建
- ·smarty技术学习,修改php模板的一点体会
- ·PHP中的sprintf()函数的学习研究笔记
- ·PHP技巧:使用APC缓存优化PHP程序
- ·windows下Apache2+php4+MySql5集成简明教程
- ·PHP预定义变量
- ·突破Windows 2003 PHP服务器的新思路
- ·用Apache反向代理设置对外的WWW和文件服务器
- ·Mysql的常用命令
- ·如何在Form域中Post大于100K字节的数据
- ·详细学习PHP中对文件和目录的操作方法
- ·急速搭建属于自己的Discuz!6论坛
- ·如何利用PHP会话显示出当前在线的用户
- ·PHP编程中break及continue两个流程控制指令
- ·PHP项目将联合起来转向PHP5
- ·初学解决疑惑:PHP是什么?
- ·Discuz!5.5 JS的调用
- ·PHP4将结束更新并在明年退出历史的舞台
特别推荐
- ·PHP入门指导:如何学习PHP?
- ·Php+Mysql注入专题
- ·PHP:实现给上传图片加水印的程序代码
- ·PHP动态网站开发中常用的8个小技巧
- ·PHP初学者:配置Apache服务器并且设置DNS
- ·初学PHP指导:php.ini 配置详细选项
- ·好文分享:PHP入门的学习方法
- ·急速搭建属于自己的Discuz!6论坛
- ·PHP入门:初学来看配置文件PHP.INI的中文注释
- ·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
- ·总结:一些PHP学习过程中的心得和经验
- ·新手入门:JSP初学者必须掌握的语法点
- ·PHP技巧:PHP脚本编程中的文件系统函数库
- ·详细讲解PHP编程中分页显示的制作
- ·成为PHP编程高手应该遵循的三个准则
- ·谈谈生成静态页面的一些经验
- ·新手入门:详细解述七个软件开发的原则
- ·简单的webservice开发例子
- ·PHP木马攻击的防御之道
- ·基础入门:动态网页制作PHP中Session的概念
