文档章节

汉字转Unicode编码,Unicode编码转汉字

张学良友
 张学良友
发布于 2017/09/05 16:17
字数 501
阅读 13
收藏 0
<?php
 
/**
 * 汉字转Unicode编码
 * @param string $str 原始汉字的字符串
 * @param string $encoding 原始汉字的编码
 * @param boot $ishex 是否为十六进制表示(支持十六进制和十进制)
 * @param string $prefix 编码后的前缀
 * @param string $postfix 编码后的后缀
 */
function unicode_encode($str, $encoding = 'UTF-8', $ishex = false, $prefix = '&#', $postfix = ';') {
    $str = iconv($encoding, 'UCS-2', $str);
    $arrstr = str_split($str, 2);
    $unistr = '';
    for($i = 0, $len = count($arrstr); $i < $len; $i++) {
        $dec = $ishex ? bin2hex($arrstr[$i]) : hexdec(bin2hex($arrstr[$i]));
        $unistr .= $prefix . $dec . $postfix;
    }
    return $unistr;
}
 
/**
 * Unicode编码转汉字
 * @param string $str Unicode编码的字符串
 * @param string $decoding 原始汉字的编码
 * @param boot $ishex 是否为十六进制表示(支持十六进制和十进制)
 * @param string $prefix 编码后的前缀
 * @param string $postfix 编码后的后缀
 */
function unicode_decode($unistr, $encoding = 'UTF-8', $ishex = false, $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 = $ishex ? hexdec($arruni[$i]) : intval($arruni[$i]);
        $unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);
    }
    return iconv('UCS-2', $encoding, $unistr);
}
 
header('Content-Type: text/html; charset=UTF-8');
 
// UTF-8字符串测试
$str = '龕龖龗龘龙龚龛龜龝龞龟龠龡龢龣龤龥';
var_dump($str);
 
// 简单的
$uni_str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8');
var_dump($uni_str);
 
$str3 = mb_convert_encoding($uni_str, 'UTF-8', 'HTML-ENTITIES');
var_dump($str3);
 
$uni_str = unicode_encode($str);
var_dump($uni_str); // &#40853;&#40854;&#40855;&#40856;&#40857;&#40858;&#40859;&#40860;&#40861;&#40862;&#40863;&#40864;&#40865;&#40866;&#40867;&#40868;&#40869;
 
$str2 = unicode_decode($uni_str);
var_dump($str2); // 龕龖龗龘龙龚龛龜龝龞龟龠龡龢龣龤龥
 
$uni_str = unicode_encode($str, 'UTF-8', true, '\u', '');
var_dump($uni_str); // \u9f95\u9f96\u9f97\u9f98\u9f99\u9f9a\u9f9b\u9f9c\u9f9d\u9f9e\u9f9f\u9fa0\u9fa1\u9fa2\u9fa3\u9fa4\u9fa5
 
$str2 = unicode_decode($uni_str, 'UTF-8', true, '\u', '');
var_dump($str2); // 龕龖龗龘龙龚龛龜龝龞龟龠龡龢龣龤龥
 
 
// GBK字符串测试
$str = 'PHP汉字转UNICODE';
 
$str = iconv('UTF-8', 'GBK//IGNORE', $str);
$uni_str = unicode_encode($str, 'GBK');
var_dump($uni_str); // &#80;&#72;&#80;&#27721;&#23383;&#36716;&#85;&#78;&#73;&#67;&#79;&#68;&#69;
 
$str2 = unicode_decode($uni_str, 'GBK');
$str2 = iconv('GBK', 'UTF-8', $str2);
var_dump($str2); // PHP汉字转UNICODE
 
$uni_str = unicode_encode($str, 'GBK', true, '\u', '');
var_dump($uni_str); // \u0050\u0048\u0050\u6c49\u5b57\u8f6c\u0055\u004e\u0049\u0043\u004f\u0044\u0045
 
$str2 = unicode_decode($uni_str, 'GBK', true, '\u', '');
$str2 = iconv('GBK', 'UTF-8', $str2);
var_dump($str2); // PHP汉字转UNICODE

 

本文转载自:

共有 人打赏支持
张学良友
粉丝 0
博文 16
码字总数 2221
作品 0
长沙
解决json_encode中文UNICODE转码问题

用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了...

grushy
2014/10/21
0
0
第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及...

1、函数介绍 在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有关的两个主要函数为: 1)将字符串用指定的编码集合解析成字节数组,完成Unicode-〉charsetName转换 ...

taote
2011/12/09
0
0
JavaScript: 详解Base64编码和解码

Base64是最常用的编码之一,比如开发中用于传递参数、现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等。Base64编码在RFC2045中定义,它被定义为:Base64内容传送...

陈亦
2014/02/19
0
27
在Python中使用中文

在Python中使用中文 这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。 Python 默认支持的是ASCII字...

Airship
2016/08/09
4
0
汉字转拼音的Java类库--JPinyin

JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进。 【JPinyin主要特性】 1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPi...

Jayer
2013/05/15
12K
11

没有更多内容

加载失败,请刷新页面

加载更多

腾讯投资最高1.75亿美元正式进军菲律宾移动支付市场

菲律宾长途电话公司(PLDT)公司今日宣布,中国互联网巨头腾讯和私募股权公司KKR将获得该公司旗下金融科技公司Voyager Innovations的少数股权。 PLDT在一份声明中称:“腾讯和KKR最多将分别收...

linuxCool
30分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 正则介绍 正则就是一串有规律的字符...

hhpuppy
41分钟前
1
0
J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接

一直以来 J2Cache 都是使用 Jedis 连接 Redis 服务的。Jedis 是一个很老牌的 Redis 的 Java 开发包,使用很稳定,作者维护很勤勉,社区上能搜到的文章也非常非常多。算是使用范围最广的 Redi...

红薯
今天
13
0
一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部