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 中执行系统外部命令
Oct 09 PHP
PHP4实际应用经验篇(4)
Oct 09 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
利用PHP实现短域名互转
Jul 05 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
PHP4引用文件语句的对比
2006/10/09 PHP
php中Smarty模板初体验
2011/08/08 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
JavaScript 继承使用分析
2011/05/12 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
javascript实现连续赋值
2015/08/10 Javascript
完善的jquery处理机制
2016/02/21 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
详解Numpy中的广播原则/机制
2018/09/20 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python验证码图片处理(二值化)
2019/11/01 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
人力资源部门的主要职能
2014/02/22 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
银行工作心得体会范文
2016/01/23 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python