先转换成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;
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;
解决方案 »
- ZipArchive 添加压缩包注脚的时候是乱码?文件类型是UTF-8?怎么才能让它不是乱码,下面是代码
- 织梦5.5改系统基本参数时,配置文件'D:/wwwroot/sc-tnb/data/config.cache.inc.php'不支持写入,无法修改系统配置参数!
- php/xml,
- 新鸟的循环取时间问题
- 在本地测试BLOG,不能正常安装!
- php拼接json的问题
- windows中GET方式提交含中文参数时出现internal server error ,(linux无)
- 初学PHP和MYSQL,有问题请教
- 关于php和mysql?
- 各位新年快乐
- 大家帮忙看看,我遇到一个奇怪的问题!急急,请各位帮忙
- 求救,帮忙改一下!!!
上面的函数可以吗??
我去试试看!
就是说你已经持有含有utf8编码的串了,是吧。
设 $s = utf8串
$r = ""
for($i=0;$i<strlen($s);$i++)
$r .= sprintf("%2X",$s[$i]);
echo $r;
然后再用你的函数~
为什么值总是为0 0 0 0 ?显示的页面如下:
http://wap.m-dream.com.cn/wireless/u8to16.php
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循环里的语句没写全呢?
$r = ""
for($i=0;$i<strlen($s);$i++)
$r .= sprintf("%2X",ord($s[$i]));
echo $r;