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 编写大型网站问题集
May 07 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
php curl基本操作详解
Jul 23 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
php bootstrap实现简单登录
Mar 08 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
PHP正则表达式之RCEService回溯
Apr 11 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
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
解读python logging模块的使用方法
2018/04/17 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
浅述python2与python3的简单区别
2018/09/19 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
人工神经网络算法知识点总结
2019/06/11 Python
django解决订单并发问题【推荐】
2019/07/31 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
苹果音乐订阅:Apple Music
2018/08/02 全球购物
客服服务心得体会
2013/12/30 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS