PHP实现Unicode编码相互转换的方法示例


Posted in PHP onNovember 17, 2020

本文实例讲述了PHP实现Unicode编码相互转换的方法。分享给大家供大家参考,具体如下:

<?php
/**
* $str 原始中文字符串
* $encoding 原始字符串的编码,默认utf-8
* $prefix 编码后的前缀,默认"&#"
* $postfix 编码后的后缀,默认";"
*/
function unicode_encode($str, $encoding = 'utf-8', $prefix = '&#', $postfix = ';') {
 //将字符串拆分
 $str = iconv("UTF-8", "gb2312", $str);
 $cind = 0;
 $arr_cont = array();
 for ($i = 0; $i < strlen($str); $i++) {
 if (strlen(substr($str, $cind, 1)) > 0) {
  if (ord(substr($str, $cind, 1)) < 0xA1) { //如果为英文则取1个字节
  array_push($arr_cont, substr($str, $cind, 1));
  $cind++;
  } else {
  array_push($arr_cont, substr($str, $cind, 2));
  $cind+=2;
  }
 }
 }
 foreach ($arr_cont as &$row) {
 $row = iconv("gb2312", "UTF-8", $row);
 }
 //转换Unicode码
 foreach ($arr_cont as $key => $value) {
 $unicodestr.= $prefix . base_convert(bin2hex(iconv('utf-8', 'UCS-4', $value)), 16, 10) .$postfix;
 }
 return $unicodestr;
}
/**
* $str Unicode编码后的字符串
* $decoding 原始字符串的编码,默认utf-8
* $prefix 编码字符串的前缀,默认"&#"
* $postfix 编码字符串的后缀,默认";"
*/
function unicode_decode($unistr, $encoding = 'utf-8', $prefix = '&#', $postfix = ';') {
 $arruni = explode($prefix, $unistr);
 $unistr = '';
 for ($i = 1, $len = count($arruni); $i < $len; $i++) {
 if (strlen($postfix) > 0) {
  $arruni[$i] = substr($arruni[$i], 0, strlen($arruni[$i]) - strlen($postfix));
 }
 $temp = intval($arruni[$i]);
 $unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);
 }
 return iconv('UCS-2', $encoding, $unistr);
}
$str = "PHP编程:3water.com";
$unistr = unicode_encode($str);
$unistr2 = unicode_decode($unistr);
echo $unistr . '<br />';
echo $unistr2 . '<br />';
$unistr = unicode_encode($str,'GBK','\\u');
$unistr2 = unicode_decode($unistr,'GBK','\\u');
echo $unistr . '<br />';
echo $unistr2 . '<br />';
PHP 相关文章推荐
黑夜路人出的几道php笔试题
Aug 04 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
基于php缓存的详解
May 15 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 PHP
Smarty模板语法详解
Jul 20 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
PHP实现文件下载【实例分享】
Apr 28 #PHP
PHP实现批量删除(封装)
Apr 28 #PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 #PHP
PHP后台微信支付和支付宝支付开发
Apr 28 #PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 #PHP
ThinkPHP实现简单登陆功能
Apr 28 #PHP
ThinkPHP实现分页功能
Apr 28 #PHP
You might like
快速配置PHPMyAdmin方法
2008/06/05 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python入门教程之运算符与控制流
2016/08/17 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
PHP开发的一般流程
2013/08/13 面试题
do you have any Best Practice for testing
2016/06/04 面试题
大学生就业推荐信范文
2013/11/29 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
求职意向书范文
2014/04/01 职场文书
婚前财产公证书
2014/04/10 职场文书
员工加薪申请报告
2015/05/15 职场文书
2015初一年级组工作总结
2015/07/24 职场文书