详解PHP编码转换函数应用技巧


Posted in PHP onOctober 22, 2016

在PHP中有数量庞大的函数来支持我们的需求应用。下面介绍的这个函数就是有关PHP编码转换函数。希望对大家有所帮助。mb_convert_encoding 函数为PHP内部多字节字符串编码转换函数。

可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码。PHP 4 >= 4.0.6、PHP 5 版本支持。

PHP编码转换函数原型:

/** 
* 多字节字符串编码转换函数 

* @param string str 需要进行编码转换的字符串 
* @param string to_encoding 指定转换为某种编码
,如:gb2312、gbk、utf-8等 
* @param mixed from_encoding 混合指定原来字串的编码
,如:同时指定 JIS, eucjp-win, sjis-win 混合编码 
* @return string 
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] ) 

PHP编码转换函数使用举例:

1、把 GBK 编码字串转换成 UTF-8 编码字串

< ?PHP  
header("content-Type: text/html; 
charset=Utf-8");  
echo mb_convert_encoding("
你是我的好朋友", "UTF-8", "GBK");  
?>

2、把 UTF-8 编码字串转换成 GB2312 编码字串

// 注意将此文件存盘成 utf-8 
编码格式文件再测试  
< ?PHP  
header("content-Type: text/html; 
charset=gb2312");  
echo mb_convert_encoding("
你是我的好朋友", "gb312", "utf-8");  
?>

3、对整个页面进行转换

该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。

在PHP文件的头部加上下面三行代码:

mb_internal_encoding("gb2312");  
// 这里的gb2312是你网站原来的编码  
mb_http_output("HTML-ENTITIES"); ob_start('mb_output_handler');

使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。

如果没有没有开启PHP的mbstring扩展,则需要做如下设置,让PHP支持该扩展。

1、windows 服务器环境

编辑 PHP.ini 文件,将; extension=PHP_mbstring.dll 前面的 ; 去掉,重启网页服务器。

2、Linux服务器环境

在编译配置时加入 --enable-mbstring=cn 编译参数,再进行PHP的编译安装。

结束语:

如果大家在使用PHP编码转换函数的过程中,还有什么无法明白的地方,可以参看《PHP手册》。

PHP 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
用定制的PHP应用程序来获取Web服务器的状态信息
Oct 09 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
php实现简单洗牌算法
Jun 18 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
zf框架db类的分页示例分享
Mar 14 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
php自动给网址加上链接的方法
Jun 02 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 #PHP
PHP实现多关键字加亮功能
Oct 21 #PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 #PHP
PHP与服务器文件系统的简单交互
Oct 21 #PHP
微信公众号开发客服接口实例代码
Oct 21 #PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 #PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 #PHP
You might like
解析csv数据导入mysql的方法
2013/07/01 PHP
浅谈PHP的反射API
2017/02/26 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python读取与处理netcdf数据方式
2020/02/14 Python
linux面试题参考答案(1)
2016/01/22 面试题
医院辞职信范文
2014/01/17 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
运动会通讯稿200字
2015/07/20 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android