php utf 8转gbk2312,完美转换UTF-8为GB2312(GBK)的PHP函数

function GetGB2312String($name) {

$tostr = "";

for($i=0;$i

$curbin = ord(substr($name,$i,1));

if($curbin < 0x80) {

$tostr .= substr($name,$i,1);

} elseif($curbin < bindec("11000000")) {

$str = substr($name,$i,1);

$tostr .= "".ord($str).";";

} elseif($curbin < bindec("11100000")) {

$str = substr($name,$i,2);

$tostr .= "".GetUnicodeChar($str).";";

$i += 1;

} elseif($curbin < bindec("11110000")) {

$str = substr($name,$i,3);

$gstr= iconv("UTF-8","GB2312",$str);

if(!$gstr) {

$tostr .= "".GetUnicodeChar($str).";";

} else {

$tostr .= $gstr;

}

$i += 2;

} elseif($curbin < bindec("11111000")) {

$str = substr($name,$i,4);

$tostr .= "".GetUnicodeChar($str).";";

$i += 3;

} elseif($curbin < bindec("11111100")) {

$str = substr($name,$i,5);

$tostr .= "".GetUnicodeChar($str).";";

$i += 4;

} else {

$str = substr($name,$i,6);

$tostr .= "".GetUnicodeChar($str).";";

$i += 5;

}

}

return $tostr;

}

function GetUnicodeChar($str) {

$temp = "";

for($i=0;$i

$x = decbin(ord(substr($str,$i,1)));

if($i == 0) {

$s = strlen($str)+1;

$temp .= substr($x,$s,8-$s);

} else {

$temp .= substr($x,2,6);

}

}

return bindec($temp);

}

//程序使用:

$value = GetGB2312String($value);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值