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程序的php代码
Apr 07 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php实现jQuery扩展函数
Oct 30 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 PHP
php实现的数组转xml案例分析
Sep 28 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 switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
php输出形式实例整理
2020/05/05 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python批量获取html内body内容的实例
2019/01/02 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python中entry用法讲解
2020/12/04 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
详解Python中的文件操作
2021/01/14 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
Android面试宝典
2013/08/06 面试题
竞选卫生委员演讲稿
2014/04/28 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android