急,怎么把网页实体字符串如 &#36152&#26131&#32463这样的字符串转化为普通GB2312的字符串呢?

怎么把网页实体字符串如 贸易经这样的字符串转化为普通GB2312的字符串,我需要在程序里面处理。
---------------------------------------------------------------
正解
------------------------------------------------------------

$v) { if(substr($v,0,2) == "%u") $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); elseif(substr($v,0,3) == "&#x") $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); elseif(substr($v,0,2) == "&#") { $ar[$k] = iconv("UCS-2","GBK",pack("n",preg_replace("/[^\d]/","",$v))); } } return join("",$ar); } echo unescape('&#36152&#26131&#32463'); //out 贸易经 ?> \-------------------------------------------------------------------------------------- “源代码仍然是这些数字代码”??? 呵呵,楼主的iconv不支持 UCS-2 编码?可见你的php版本太低了! 常见的unicode编码的ascii表示有以下几种 %uhhhh &#xhhhh; &#ddddd; 其中:h 十六进制数;d 十进制数 通常以“;”作为编码串的结束符,对于ie6以下的浏览器“;”是不能缺少的 无论是用十六进制还是十进制表示,他们都是unicode的编码值。一个短整型数(占两个字节) 说句不好听的话,楼主的u2utf82gb($c)还是本人的作品。居然被拿来作为攻击我的武器啦。可见“为人须留三分意,不可全抛一片心”是多么正确的了 \------------------------------------------------------------------------------ 不过,不明白中间的转换有什么用,以下的代码也输出贸易经 function unescape($str) { $str = rawurldecode($str); return $str; } echo unescape('&#36152&#26131&#32463'); //out 贸易经 仅这样输出的还是:&#36152&#26131&#32463,只不过浏览器把他转换成“贸易经”显示,“源文件”中并没有变。因为rawurldecode并不处理这样的输入串 加入rawurldecode的原因可以从函数名(unescape)看出,他是一个与js的unescape完全等效的函数 unicode的都是两个字节,为什么php的utf-8编码是三个字节。 因为编码规则不同嘛 utf-8编码是一到八个字节,汉字的utf-8编码多是三个字节,但也有两个和四个字节的
Published At
Categories with Web编程
Tagged with
comments powered by Disqus