如何将gbk编码转成utf8格式

 更新时间:2016年11月25日 16:33  点击:1348
apache 字符集 GB 2312
mysql 字符集 GBK
现要从 mysql 中提出信息(GBK) 写入到 XML 中
XML中的编码格式是 UTF-8
那么,如何将GBK编码成 UTF8 ??
详细介绍:
前一阵子见到了qiushuiwuhen君的关于gbk,unicode,big5的转换的文章
但是多少有一些不太大的问题
于是我设计了一个负责字符转换的类,修正了其中的一些不足,增加了部分功能,以后我会不断扩充该类,来支持更多的字符集
增加了如下几点:
unicode->gbk 符号部分的转换
欧元符(
动态网站的内容加速显示十分重要,本文通过对 PHP 几个函数的深入讨论,提出了 PHP 网页压缩和缓冲的解决方案
一、介绍几个控制 PHP 输出的函数
PHP4 采用了缓冲机制,在你决定发送以前,所有内容只是存在于缓冲中,而不是直接发送给浏览器,虽然你可以用 header 和 setcookie 函数来实现,但是这两个函数相比于功能强大的输出函数来说只是一点“雕虫小技”。让我们来看看这些函数的真本事:
void ob_start(void);
本函数告诉 PHP 处理器把所有输出重定向到内部缓冲,调用这个函数后,就不会有输出到浏览器。
string ob_get_contents(void);
本函数把输出缓冲返回到一个字符串,你可以用来把堆积起来的输出一起发送到浏览器。当然要先关掉缓冲。
int ob_get_length(void);
本函数返回输出缓冲的长度。
void ob_end_clean(void);
本函数清除并关闭缓冲。在输出到浏览器之前你需要使用这个函数。
void ob_implicit_flush ([int flag])
本函数用来控制隐式缓冲泻出,缺省为 off,如果打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。
二、采用输出控制来压缩 PHP 的输出
在开始之前,要保证你的 PHP4 编译时支持 Zlib。
首先,初始化输出缓冲:
ob_start();
ob_implicit_flush(0);
然后产生所有的输出内容。
print("本例为压缩输出!");
页面生成以后,采用:
$contents = ob_get_contents();
ob_end_clean();
还要检查浏览器是否支持压缩数据,我们采用在变量 $HTTP_ACCEPT_ENCODING 中检查 "gzip, deflate"的办法:
if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) {
// 产生 gzip 后的内容
} else {
echo $contents;
}
下面我们分析怎样产生 gzip 输出:
// 告诉浏览器下面接收的是 gzip 数据。
header("Content-Encoding: gzip");
// 显示 gzip 文件的文件头
// 只要一次就够了
echo "x1fx8bx08x00x00x00x00x00";
// 计算长度和 CRC 校验码
$Size = strlen($contents);
$Crc = crc32($contents);
// 压缩数据
$contents = gzcompress($contents, 9);
// 不能直接在这里输出内容,因为还没有写入 CRC 呢!
$contents = substr($contents, 0, strlen($contents) - 4);
PHP代码:--------------------------------------------------------------------------------
以下的介绍是基于2.5版的,也不知有BUG没,OS是win2000,php应该
4.1以后的就可以。,兄弟只是开发时使用过几次,没太深的研究,
介绍的在手册上都能找到,如果有错误之处难免多包涵吧
smarty模板据说是php.net推荐使用的,据说功能比较强,据说速度
也不慢,据说用的人越来越多<img src="images/smilies/biggrin.gif" border="0" alt="">
官方网站smarty.php.net上面有论坛,有下载,有手册。有你想要的一切,切入正题:
(-)安装:
下载的包解压后有三个下级目录:模板文件目录是<libs> 其下有四个类文件一个目录.首先介绍最重要的:Smarty.class.php它应该是整个smarty模板的核心类,平时应用时也是跟它打交道,在你的应用程序目录下建立以下目录结构:
/app_1/smarty/libs
/app_1/smarty/templates_c
/app_1/smarty/templates
/app_1/smarty/configs
<libs>对应压缩包下的libs目录下面放smarty需要的类文件
<templates>存放模板文件,程序用到的模板文件都放这里
<configs>存放模属性文件,以后详细说
<templates_c>存放"编译"后的模板文件,以后详细说,些目录需要设为777
<cache>存放缓存的模板文件
以上文件名为smarty默认的文件名,用户可以指定不同的文件名,如:guest_template_dir,admin_template_dir 等.如果不指定将使用以上文件名
(二)使用:
设计模板:
1模板变量:{$变量名},如 {$color},{$type}
test_color.tpl
<font color={$color}>{$name}</font>
test_url.tpl
<a href="{$url}" target="{$target}">{$title}</a>
2也可以使用模板数组
test_array.tpl
{people.name}<br>
{people.sex}<br>
{people.money}<br>
3模板使用区块列表
如:
user1 user1_sex user1_money
user2 user2_sex user2_money
user3 user3_sex user3_money
section.tpl
可以用表格格式化:
<TABLE>
{section name=user loop=$userList}
<TR>
<TD>{$userList[user].name}</TD>
<TD>{$userList[user].sex}</TD>
pfcTemplate 主要特点
1. 高效率
因为程序中分析变量、区块时没有采用正规表达式去做,而采用PHP内置字符串
处理函数来做,所以效率可能会稍高于同类产品
2. 易用性
使用此类只需简单的 创建类实例 -> 添加文件 -> 设置变量/区块 -> [如果有区块则解析]
-> 解析文件 就可以完成. 采用常用的命名方式, 提供通俗易懂的API接口方法.
3. 多级区块处理
通过程序的多级区块处理功能可以实现很多复杂的效果, 可以进行无限层次的套嵌(机器性能允许)
4. 可处理多种来源的模板
模板不一定要做成文件, 可以是来自数据库或其它来源.
$str = read_template_string();
$tpl->set_string('handle1', $str);
5. 变量可定制性
模板中的标识符是可以自行调整的.
如: 将简单变量的标识符定制为 "{/var
刚在网上找的一个类。点击下载类文件(zip压缩文件,2.25K)
$z = new PHPZip(); //新建立一个zip的类
  方法一:
$z -> Zip("", "out1.zip"); //添加当前目录和子目录下的所有档案
  方法二:
$files=array('1.txt','gb.txt');
$files[]='5.txt';
$z -> Zip($files, "out2.zip"); //添加文件列表
  方法三:
$z -> Zip("/usr/local/sext/", "out3.zip"); //添加指定目录
[!--infotagslink--]

相关文章

  • Json格式详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成...2021-11-05
  • php实例分享之html转为rtf格式

    核心代码: 复制代码 代码如下:<!--?php$html2RTFCom = new COM("HTML2RTF.Converter");$html2RTFCom--->PreserveImages = true;$html2RTFCom->PageNumbers = 1;$html2RTFCom->PageNumbersAlignH = 1;$html2RTFCom->Pa...2014-06-07
  • Pycharm 设置默认解释器路径和编码格式的操作

    这篇文章主要介绍了Pycharm 设置默认解释器路径和编码格式的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05
  • c#字符串编码编码(encoding)使用方法示例

    System.Text提供了Encoding的抽象类,这个类提供字符串编码的方法。使Unicode字符数组的字符串,转换为指定编码的字节数组,或者反之,看下面的例子...2020-06-25
  • nestjs返回给前端数据格式的封装实现

    这篇文章主要介绍了nestjs返回给前端数据格式的封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • 通过javascript进行UTF-8编码的实现方法

    下面小编就为大家带来一篇通过javascript进行UTF-8编码的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-07-01
  • php中把unicode编码转化为中文

    小编在网上看到最多的就是汉字转换unicode编码了,今天我们看到一个反过来的操作就是把unicode转换成中文了,下面一起来看看 这两天帮别人开发微信平台好友板块,存...2016-11-25
  • .Net(c#)汉字和Unicode编码互相转换实例

    下面小编就为大家带来一篇.Net(c#)汉字和Unicode编码互相转换实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C# 设置系统日期格式的方法

    公司电脑各式各样的都有,里面的设置也有很多不统一的,我们做软件一般会从系统中获取一些数据,比如日期时间,环境变量的路径参数,可以用批处理文件达到我们所想要的目的,也可以用C#代码...2020-06-25
  • 浅析GridView中显示时间日期格式的问题

    下面小编就为大家带来一篇浅析GridView中显示时间日期格式的问题。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • Linux下常用压缩格式的压缩与解压方法详解

    这篇文章主要介绍了Linux下常用压缩格式的压缩与解压方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • R语言变量重编码、重命名的操作

    这篇文章主要介绍了R语言变量重编码、重命名的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • PHP把16进制的编码转为中文程序代码

    今天在做公司的项目的时候,遇到一个问题,群聊天记录存入数据库的时候把聊天记录及央视使用16进制转换,我在做将聊天记录导出为text文本的时候,需要将聊天记录先从16进制转...2016-11-25
  • php中mb_detect_encoding检测文件编码方法[非完美]

    在php中我们可以利用mb_detect_encoding函数来检查字符串编码或文件编码,mb_detect_encoding函数是php内置的一个函数了,下面我们简单介绍。 关于文件编码的检测,百...2016-11-25
  • php输出全部gb2312编码内的汉字方法

    本文介绍了php输出全部gb2312编码内的汉字方法,非常实用,有兴趣的同学可以参考一下 php输出全部gb2312编码内的汉字,$area表示分区,$pos表示分区内所在位置。 代码...2017-07-06
  • 解决python3 中的np.load编码问题

    这篇文章主要介绍了解决python3 中的np.load编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
  • C#简易图片格式转换器实现方法

    这篇文章主要介绍了C#简易图片格式转换器实现方法,涉及C#基于WinForm操作图片的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 基于C#开发中的那些编码问题(详谈)

    下面小编就为大家分享一篇基于C#开发中的那些编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C#日期格式字符串的相互转换操作实例分析

    这篇文章主要介绍了C#日期格式字符串的相互转换操作,结合实例形式分析了C#日期格式字符串的相互转换操作函数与相关使用技巧,需要的朋友可以参考下...2020-06-25
  • 设置表单提交数据的编码两种办法

    有时我们提交页面编码为gb2312但是接受的php页面的编码为uft8这样如果我们直接这样提交过去,肯定是出现乱码了,那么我们可以在提交表单时设置提交数据编码即可解决。...2016-09-20