STUDY WHILE YOU ARE BORING


  • 首頁

  • 搜索

  • 技术

  • Tags

  • 关于我

编码转换:unicode(10进制,〹)转utf8

發表於 December 28, 2014   |   作者: Tim   |   分类: 技术   |   评论

遇到问题:我需要把好大一坨类似“ 凡 ;客 ; ”这样的东西转化成可读的utf8编码。
例如 客 ; 代表「客」这个字

一步一步探索:

  • 网上找了很多代码来试验,都以失败告终
  • 直接google搜索 客 ; 变成了google 搜索 「客」这个关键字了
  • 重新google后得知,该类型编码为html页面中可以正常显示为汉字的unicode的10进制表示形式
  • 再次搜索,发现前辈的文章:http://blog.csdn.net/linvo/article/details/6221913, 里面提到

再次翻手册,在utf8_encode函数的评论中看到了一个有用的回复,试验成功!(PS:带评论的手册真他喵的好用~)

直接copy博主的函数使用,发现失败。最后跑到博主提到的 utf8_encode 官方文档里面去找评论,找到博主说的这个评论,发现博主粘贴的时候估计格式变了,导致不能使用,下面附上正确的转换函数。

    function html_to_utf8 ($data)
        {
            $data=htmlspecialchars_decode(htmlspecialchars_decode($data));
        return preg_replace("/\\&\\#([0-9]{3,10})\\;/e", '_html_to_utf8("\\1")', $data);
        }

    function _html_to_utf8($data) {
        if ($data > 127) {
            $i = 5;
            while ( ($i --) > 0 ) {
                if ($data != ($a = $data % ($p = pow ( 64, $i )))) {
                    $ret = chr ( base_convert ( str_pad ( str_repeat ( 1, $i + 1 ), 8, "0" ), 2, 10 ) + (($data - $a) / $p) );
                    for($i; $i > 0; $i --)
                        $ret .= chr ( 128 + ((($data % pow ( 64, $i )) - ($data % ($p = pow ( 64, $i - 1 )))) / $p) );
                    break;
                }
            }
        } else
            $ret = "&#$data;";
        return $ret;
    }
php, unicode, utf8
Axure 的多人协作操作经验分享
如何做前端登录密码加密比较安全

钜添

54 文章
2 分類
1 页面
GitHub 日记技术
php apache centos macos mysql https shadowsocks mac 微信 ups svn javascript outline accesskey Chrome Extension letsencrypt ssl free certification certbo wildcard renew cloudflare pgsql 归档 binlog isset array_key_exists redmine axure
© 2021 钜添   |   文章 RSS     |  登录
由 Typecho 强力驱动
主題 - NexT
Send message encrypted and private - Msg2
Build your Under Construction Page without hosting - UnderConstruct.IO