先转换成unicode编码,在转换成utf-8编码。然后转换成十六进制编码
function u2utf8($c) 

for($i=0;$i<count($c);$i++) 
$str=""; 
if ($c < 0x80) { 
$str.=$c; 

else if ($c < 0x800) { 
$str.=chr(0xC0 | $c>>6); 
$str.=chr(0x80 | $c & 0x3F); 

else if ($c < 0x10000) { 
$str.=chr(0xE0 | $c>>12); 
$str.=chr(0x80 | $c>>6 & 0x3F); 
$str.=chr(0x80 | $c & 0x3F); 

else if ($c < 0x200000) { 
$str.=chr(0xF0 | $c>>18); 
$str.=chr(0x80 | $c>>12 & 0x3F); 
$str.=chr(0x80 | $c>>6 & 0x3F); 
$str.=chr(0x80 | $c & 0x3F); 

return $str; 
} 例:
$s = u2utf8("中文");
$r = ""
for($i=0;$i<strlen($s);$i++) 
  $r .= sprintf("%2X",$s[$i]);
echo $r;

解决方案 »

  1.   

    我只需要utf8转换为16进制就可以了!!
    上面的函数可以吗??
    我去试试看!
      

  2.   

    只需要utf8转换为16进制就可以了
    就是说你已经持有含有utf8编码的串了,是吧。
    设 $s = utf8串
    $r = ""
    for($i=0;$i<strlen($s);$i++) 
      $r .= sprintf("%2X",$s[$i]);
    echo $r;
      

  3.   

    我是先用UEDIT把字串转为U8的
    然后再用你的函数~
    为什么值总是为0 0 0 0 ?显示的页面如下:
    http://wap.m-dream.com.cn/wireless/u8to16.php
      

  4.   

    ASP是这么写的,但是我不懂语法
    Function c2u(myText)   For i = 1 to Len(myText) ' 对每一个字节进行处理    c = Mid(myText, i, 1)     c2u = c2u & "&#x" & Hex(AscW(c)) & ";"     ' 将传回的Unicode转换为十六进制值   next End Function
    我比较了一下,是不是你的for循环里的语句没写全呢?
      

  5.   

    嗨嗨,不好意思!漏了点东西。
    $r = ""
    for($i=0;$i<strlen($s);$i++) 
      $r .= sprintf("%2X",ord($s[$i]));
    echo $r;