惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
V
Visual Studio Blog
博客园 - Franky
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
罗磊的独立博客
小众软件
小众软件
V
V2EX
GbyAI
GbyAI
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
月光博客
月光博客
Recent Announcements
Recent Announcements
雷峰网
雷峰网
F
Fortinet All Blogs
M
MIT News - Artificial intelligence

博客园 - guoadou

新的开始 《项目管理艺术》读书笔记 —— 决定做什么的常见不良决策一览 《项目管理艺术》读书笔记 —— 项目规划的三种观点 《IF》 - Joseph Rudyard Kipling 论信息系统的架构设计 【转】系统架构设计师考试大纲(2009) nginx error_page 404 用 php header 无法跳转 The Elements of Programming Style 导出MySQL数据库结构的PHP脚本 轻松面试 搞定技术奇才 Cyworld Values & Principles 通过创建SCHEMABINDING VIEW提高JOIN的速度 长的很像Cyworld的QQ [北京][赛我网]HTML高级工程师 - guoadou - 博客园 [招聘] 韩国企业招聘Java .NET 开发人员 document.body.scrollTop总是零的原因 unicode_to_utf8 in PHP [新闻]Cyworld.com.cn开始公测 hex2bin in PHP
utf8_to_unicode in PHP
guoadou · 2005-12-28 · via 博客园 - guoadou

想使用8:UCS2格式编码下行短信的时候,需要把UTF8转换成Unicode的十六进制编码,但是PHP没有内置Unicode的支持,怎么办呢?

/**
 * 从UTF8转换成unicode beta1.0
 * @param mixed $string要转换的字符串,
 * @return unicode的十六进制编码
*/
function utf8_to_unicode_hex($string){
    
$length = strlen($string);
    
$outstring = "";
    
for ( $i = 0$i < $length$i++ )  {
        
$asc_value = ord($string[$i]);
        
if($asc_value > 127) {
            
if($asc_value >= 192 && $asc_value <= 223){
                
$str_dec = (ord($string[$i]) & 0x3f<< 6;
                
$i++;
                
$str_dec += ord($string[$i]) & 0x3f;
                
$str_hex = dechex($str_dec);
                
$outstring .= str_pad($str_hex,4,"0",STR_PAD_LEFT);
            }
elseif($asc_value >= 224 && $asc_value <= 239){
                
$str_dec = (ord($string[$i]) & 0x1f<< 12;
                
$i++;
                
$str_dec += (ord($string[$i]) & 0x3f<< 6;
                
$i++;
                
$str_dec += ord($string[$i]) & 0x3f;
                
$outstring .=dechex($str_dec);
            }
elseif($asc_value >= 240 && $asc_value <= 247){
                
$str_dec = (ord($string[$i]) & 0x0f<< 18;
                
$i++;
                
$str_dec += (ord($string[$i]) & 0x3f<< 12;
                
$i++;
                
$str_dec += (ord($string[$i]) & 0x3f<< 6;
                
$i++;
                
$str_dec += ord($string[$i]) & 0x3f;
                
$outstring .= dechex($str_dec);
            }
else{
                
$str_hex = dechex(ord($string[$i]));
                
$outstring .= str_pad($str_hex,4,"0",STR_PAD_LEFT);
            }
        }
else{
            
$str_hex = dechex(ord($string[$i]));
            
$outstring .= str_pad($str_hex,4,"0",STR_PAD_LEFT);
        }
    }
    
return $outstring;
}

posted on 2005-12-28 15:55  guoadou  阅读(967)  评论()    收藏  举报