php反中文汉字转Unicode编码实现程序

程序

 代码如下 复制代码

/**
 * $str 原始字符串
 * $encoding 原始字符串的编码,默认GBK
 * $prefix 编码后的前缀,默认"&#"
 * $postfix 编码后的后缀,默认";"
 */
function unicode_encode($str, $encoding = 'GBK', $prefix = '&#', $postfix = ';') {
    $str = iconv($encoding, 'UCS-2', $str);
    $arrstr = str_split($str, 2);
    $unistr = '';
    for($i = 0, $len = count($arrstr); $i < $len; $i++) {
        $dec = hexdec(bin2hex($arrstr[$i]));
        $unistr .= $prefix . $dec . $postfix;
    }
    return $unistr;
}
 
/**
 * $str Unicode编码后的字符串
 * $encoding 原始字符串的编码,默认GBK
 * $prefix 编码字符串的前缀,默认"&#"
 * $postfix 编码字符串的后缀,默认";"
 */
function unicode_decode($unistr, $encoding = 'GBK', $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);
}

使用范例:

 代码如下 复制代码

//GBK字符串测试
$str = '<b>哈哈</b>';
echo $str.'<br />';
 
$unistr = unicode_encode($str);
echo $unistr.'<br />'; // <b>哈哈</b>
 
$str2 = unicode_decode($unistr);
echo $str2.'<br />'; //<b>哈哈</b>
 
//UTF-8字符串测试
$utf8_str = iconv('GBK', 'UTF-8', $str);
echo $utf8_str.'<br />'; // <b>????</b> 注:UTF在GBK下显示的乱码!可切换浏览器的编码测试
 
$utf8_unistr = unicode_encode($utf8_str, 'UTF-8');
echo $utf8_unistr.'<br />'; // <b>哈哈</b>
 
$utf8_str2 = unicode_decode($utf8_unistr, 'UTF-8');
echo $utf8_str2.'<br />'; // <b>????</b>
 
//其它后缀、前缀测试
$prefix_unistr = unicode_encode($str, 'GBK', "\u", '');
echo $prefix_unistr.'<br />'; // u60u98u62u21704u21704u60u47u98u62
 
$profix_unistr2 = unicode_decode($prefix_unistr, 'GBK', "\u", '');
echo $profix_unistr2.'<br />'; //<b>哈哈</b>

时间: 2024-11-08 22:41:28

php反中文汉字转Unicode编码实现程序的相关文章

CSS中常用中文字体的Unicode编码

常用中文字体的Unicode编码: 新细明体 PMingLiU \65B0\7EC6\660E\4F53 细明体 MingLiU \7EC6\660E\4F53 标楷体 DFKai-SB \6807\6977\4F53 黑体 SimHei \9ED1\4F53 宋体 SimSun \5B8B\4F53 新宋体 NSimSun \65B0\5B8B\4F53 仿宋 FangSong \4EFF\5B8B 楷体 KaiTi \6977\4F53 仿宋_GB2312 FangSong_GB2312 \

介绍css中文字体和Unicode编码转换方法

在网站中,都不可避免的要用到一些中文字体,比如宋体,微软雅黑,黑体等,在css中写入中文的方法一般是: font-family:"微软雅黑","黑体";这样类似的表达方式. css样式文件也区分文件编码(从视觉上看gb2312.UTF-8 这2种编码的文件,gb2312编码的样式文件代码行与行之 间的行距比较密集,看上去比较凌乱!). 因此css中指定font-family属性为黑体.幼圆.微软雅黑等中文字体可能会因为编码问题导致中文字体无法按照希望 的字体表形出来

汉字转换成Unicode编码PHP程序

汉字转换成unicode方法  代码如下 复制代码 <?php //将utf8编码的汉字转换为unicode function htou($c){  $n = (ord($c[0]) & 0x1f) << 12;  $n = (ord($c[1]) & 0x3f) << 6;  $n = ord($c[2]) & 0x3f;  return $n; } //在代码中隐藏utf8格式的字符串 function my_utf8_unicode($str)

中文转换成Unicode编码和Unicode编码转换成中文,Java代码实现

  import java.util.Properties; public class Test { public static void main(String[] args) { String s = "简介"; String tt = gbEncoding(s); // String tt1 = "你好,我想给你说一个事情"; System.out.println(decodeUnicode("\\u7b80\\u4ecb")); // S

javascript下汉字和Unicode编码互转代码_javascript技巧

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

java将中文汉字转成拼音的程序代码

就是一个无法判断的拼音,最后会变成这个 比如 铎 这个字 拼音为duo 会被误判 后来发现一个拼音包net.sourceforge.pinyin4j 下载去这里 http://pinyin4j.sourceforge.net/  代码如下 复制代码 package com.javaer.examples;   import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPiny

使用Java将中文字符转换成Unicode编码

  这两天操作XML使用到了Jdom,在创建XML文件并输出到硬盘的时候遇到一个中文编码的问题:Jdom默认输出的XML编码是UTF-8,但是文档中如果出现中文字符那么该中文字符就会变成乱码,造成XML文件无法被正确解析. UTF-8应该是可以用来表示中文的吧?我不知道这是不是Jdom的一个BUG(Jdom 1.0,beta了10次的产物哦!).我google了一下,大家解决这个问题的办法无非是把Jdom的输出字符集改为GBK或者GB2312,但是这样就会有一些副作用,如果在没有特定字符集(GB

php中把unicode编码转化为中文

这两天帮别人开发微信平台好友板块,存储用户爱好的内容都是unicode,取出来后需要转化成汉字 网上查了些方法,比较复杂,也不是特别好用,在这推荐一种方法: function unicode_decode($name){     $json = '{"str":"'.$name.'"}';   $arr = json_decode($json,true);   if(empty($arr)) return '';   return $arr['str']; } 把u

Unicode编码 问题

问题描述 您们好有人能帮我解决这个问题嘛我用程序把中文解析成Unicode编码如://汉字转换为Unicode编码publicstaticStringToUnicode(Stringstr){Stringresult="";for(inti=0;i<str.length();i++){intchr1=(char)str.charAt(i);if(chr1>=19968&&chr1<=171941){//汉字范围u4e00-u9fa5(中文)result