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 相关文章推荐
用缓存实现静态页面的测试
Dec 06 PHP
php 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
如何用PHP实现插入排序?
Apr 10 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
实例讲解PHP中使用命名空间
Jan 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』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP之短标签开启设置
2013/06/17 PHP
php微信开发之关注事件
2018/06/14 PHP
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
Vuex 入门教程
2018/01/10 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
python类装饰器用法实例
2015/06/04 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
神经网络python源码分享
2017/12/15 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
自我介绍演讲稿
2014/01/15 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
八月一日观后感
2015/06/10 职场文书
企业培训简报范文
2015/07/20 职场文书
《西门豹》教学反思
2016/02/23 职场文书
导游词之青岛崂山
2019/12/27 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript