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 17 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
php中yar框架实例用法讲解
Dec 27 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+redis消息队列实现抢购功能
2018/02/08 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
javascript document.referrer 用法
2009/04/30 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
优秀员工评语
2014/02/10 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
疾病证明书
2015/06/19 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers