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

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

博客园 - 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)  评论()    收藏  举报