PHP 自带函数里面似乎是没有能够对字符或字符串进行直接转换的函数,百度了一下,发现了一个封装函数能用。

精简过后的函数内部还是会经过几次编码转换,但是我发现编码之后对特殊字符的转换有问题,索性再精简直接去掉了编码。

所以函数现在只支持UTF-8且只能单字符(传入字符串返回错值)

function char_unicode($str, $DECODE = True) {

$result = '';

if ($DECODE === False) {

$unicodestr = intval(base_convert(bin2hex(iconv('utf-8', 'UCS-4', $str)), 16, 10));

$result = $unicodestr;

} else {

$temp = intval($str);

$result = iconv('UCS-2BE', 'utf-8', ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256));

}

return $result;

}

需要的是单字符编码,对此函数进行了一点精简和修改,精简后默认UTF-8是没有问题的,本人对编码的认知不深,所以对其他编码能否完美支持这里不做测试了。

测试效果:

函数内容:

/**

* $str 编码字符串

* $DECODE 是否解码

* $encoding 字符串的编码,默认utf-8

*/

function char_unicode($str, $DECODE = True, $encoding = 'utf-8') {

$result = '';

if ($DECODE !== True) {

$str = iconv($encoding, "gb2312", $str);

if (ord(substr($str, 0, 1)) < 0xA1) { //如果为英文则取1个字节

$row = iconv("gb2312", $encoding, substr($str, 0, 1));

} else {

$row = iconv("gb2312", $encoding, substr($str, 0, 2));

}

//转换Unicode码

$unicodestr = base_convert(bin2hex(iconv($encoding, 'UCS-4', $row)), 16, 10);

$result = $unicodestr;

} else {

$temp = intval($str);

$unistr = ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);

$result = iconv('UCS-2', $encoding, $unistr);

}

return $result;

}

测试代码:

header('Content-type:application/json;;charset=UTF-8');

/**

* $str 编码字符串

* $DECODE 是否解码

* $encoding 字符串的编码,默认utf-8

*/

function char_unicode($str, $DECODE = True, $encoding = 'utf-8') {

$result = '';

if ($DECODE !== True) {

$str = iconv($encoding, "gb2312", $str);

if (ord(substr($str, 0, 1)) < 0xA1) { //如果为英文则取1个字节

$row = iconv("gb2312", $encoding, substr($str, 0, 1));

} else {

$row = iconv("gb2312", $encoding, substr($str, 0, 2));

}

//转换Unicode码

$unicodestr = base_convert(bin2hex(iconv($encoding, 'UCS-4', $row)), 16, 10);

$result = $unicodestr;

} else {

$temp = intval($str);

$unistr = ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);

$result = iconv('UCS-2BE', $encoding, $unistr);

}

return $result;

}

$str = "爱";

$int = char_unicode($str,False);

$unstr = char_unicode($int);

$str2 = char_unicode($unstr,False);

echo 'unicode编码前:'.$str .PHP_EOL;

echo 'unicode编码后:'.$unstr.PHP_EOL;

echo 'unicode解码后:'.$str2.PHP_EOL;

您可以选择一种方式赞助本站支付宝赞助

微信赞助

分享到各大网站

分享到:更多

php输出字符unicode码,[PHP]单字符Unicode编码解码函数相关推荐

  1. python返回unicode_Python 中通过 unicode 码返回单字符的函数是 ,返回单字符 unicode 码的函数是 。_学小易找答案...

    [单选题]哪一个命令能用来查找在文件TESTFILE中只包含四个字符的行?( ) [单选题]修改以太网卡mac地址的命令为( ). [单选题]Python 字符串支持切片操作,如有字符串 s &quo ...

  2. python unicode码转换_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

  3. [PHP] unicode码、UTF-8码、字符的相互转换

    unicode与UTF-8 unicode是一个大型字符集,unicode字符集收录了世界上所有的字符,并且为每一个字符分配了一个唯一的数字类型的ID值,这个ID在英文中叫unicode code p ...

  4. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  5. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...

  6. 网络爬虫中的Unicode码解决[实例]

    unicode码 爬虫中的Unicode转中文 输出结果 unicode码 在我写爬虫的过程中,经常遇到一些网站的中文是经过Unicode转码的.在对网页进行解析时,需要将其进行转码,转为中文字符. ...

  7. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  8. 中央情报局关键词提取——Unicode码

    Dataset 本文的任务是学习计算机在内存中如何存储一个值.本文的数据集sentences_cia.csv是中央情报局备忘录的一个摘录,描述了酷刑和其他秘密活动的细节.数据格式如下: year,st ...

  9. java打印unicode_java程序实现Unicode码和中文互相转换

    有了前一篇文章的了解,大概了解了unicode编码格式了 ANSI:汉字区的内码范围高字节从B0-F7,低字节从A1-FE Unicode:汉字的Unicode编码范围为\u4E00-\u9FA5 \ ...

最新文章

  1. 十天学会php之第五天
  2. 新书《活用UML-需求分析高手》详细大纲(持续更新中)
  3. cat3 utp是不是网线_UTPCAT3网络双绞线规格型号
  4. 牛客题霸 最少素数拆分 C++题解/答案
  5. python为什么需要编辑器_Python是个什么鬼?为什么设计大牛都在学它?!
  6. VMware 多款产品中存在严重漏洞
  7. leetcode—24.堆题目leetcode总结
  8. LinkedList 真的是查找慢增删快?刷新你的认知!
  9. 数据分页模块系列 (二) 完美封装PageModel实现分页模块
  10. BAT及各大互联网公司2014前端笔试面试题:JavaScript篇
  11. vb难还是c语言难java_c语言难还是vb难?
  12. Pr视频、图片局部放大画面或画面移动
  13. 你要看透的56条人生哲理
  14. v4l2loopback 简介
  15. ps2改usb接口_如何将PS2接口键盘、鼠标改成USB接口
  16. ValueError: tile cannot extend outside image
  17. 2022-2028全球与中国期权及期货交易平台市场现状及未来发展趋势
  18. vue中使用 minix 混入
  19. 4.1 图像的几种色彩模式 [原创Ps教程]
  20. SEE MIPS RUN 第六章 内存管理与TLB

热门文章

  1. Linux零基础初级教程
  2. cac会议投稿难度大吗_发表 SCI 论文有多难?
  3. 【PP】重复生产参数文件说明
  4. 【ABAP】SAP判断单据是否被锁定
  5. 物料创建更新相关Table
  6. bat php 监控网站,HTML_进程监控实现代码[vbs+bat],运行后会在%windir%\system32\目录 - phpStudy...
  7. mysql连接串指定编码_MYSQL创建数据库时候直接指定编码和排序规则
  8. android 服务器201,Android端i-jetty服务器开发(八)
  9. C语言加取址符的作用,C语言中指针和取地址符的关系
  10. linux apt qt下载,Linux如何安装 apt-get 软件管理工具