会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
guoadou
Don't cry because it came to an end.Smile because it happened.
博客园
首页
新随笔
联系
订阅
管理
unicode_to_utf8 in PHP
当短信格式为8:UCS2编码的时候,需要把Unicode的十六进制编码转换成UTF8,但是PHP没有内置Unicode的支持,怎么办呢?
/*
*
* 把Unicode的十六进制字符串转换成utf8的文本字符串
* @param mixed $str 要转换的字符串,不能为null
* @return utf8的文本字符串
*/
public
static
function
unicode_hex_to_utf8(
$str
) {
//
判断长度
if
((
strlen
(
$str
)
%
4
)
!=
0
)
throw
new
exception
(
'
(strlen($str) % 4 != 0
'
);
//
计算byte[]的长度
$len
=
strlen
(
$str
)
/
4
;
$str_result
=
''
;
//
循环复制
for
(
$i
=
0
;
$i
<
$len
;
$i
++
){
$str_unicode_hex
=
substr
(
$str
,
$i
*
4
,
4
);
$str_result
.=
self
::
unicode_to_utf8(
$str_unicode_hex
);
}
return
$str_result
;
}
private
static
function
unicode_to_utf8(
$unicode_hex
) {
$unicode
=
hexdec
(
$unicode_hex
);
$utf8
=
''
;
if
(
$unicode
<
128
) {
$utf8
=
chr
(
$unicode
);
}
elseif
(
$unicode
<
2048
) {
$utf8
.=
chr
(
192
+
( (
$unicode
-
(
$unicode
%
64
) )
/
64
) );
$utf8
.=
chr
(
128
+
(
$unicode
%
64
) );
}
else
{
$utf8
.=
chr
(
224
+
( (
$unicode
-
(
$unicode
%
4096
) )
/
4096
) );
$utf8
.=
chr
(
128
+
( ( (
$unicode
%
4096
)
-
(
$unicode
%
64
) )
/
64
) );
$utf8
.=
chr
(
128
+
(
$unicode
%
64
) );
}
//
if
return
$utf8
;
}
//
unicode_to_utf8
posted on
2005-09-26 15:12
guoadou
阅读(
1489
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部