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获取后台Job管理的实现代码
Jun 10 PHP
20个PHP常用类库小结
Sep 11 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
深入php之规范编程命名小结
May 15 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
php生成shtml类用法实例
Dec 09 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
php生成HTML文件的类方法
2019/10/11 PHP
js的闭包的一个示例说明
2008/11/18 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
详解python3中zipfile模块用法
2018/06/18 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python爬取网页信息的示例
2020/09/24 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
公司活动策划方案
2014/01/13 职场文书
法律进学校实施方案
2014/03/15 职场文书
单位消防安全责任书
2014/07/23 职场文书
感谢信格式范文
2015/01/22 职场文书
社会实践活动总结格式
2015/05/11 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL