PHP的Bug还是我使用错误?$s=htmlentities("»");不能使用$s=html_entity_decode($s);还原? <?php$s=htmlentities("»");$s=html_entity_decode($s);echo $s;exit();//结果成“禄”了?>匪夷所思!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 echo htmlentities("»");//or UTF-8$s=htmlentities("»", ENT_COMPAT, 'GB2312 ');$s=html_entity_decode($s, ENT_COMPAT, 'GB2312 ');echo $s;exit();用的时候出问题,先看手册是怎么说的,然后再判断是否bug 没看明白你的话。我倾向于认定为bug。不过这不是重点,重点是解决这个问题。不知道有什么样的函数能准确的将html实体或编码转换为实际的字符。试了html_entity_decode、htmlspecialchars_decode、mb_convert_encoding都没成功。 你明白什么是编码不?数据编码转换如果不指定具体的编码,能正确转换才怪呢首先确定文件是什么编码(这是你的输入),其次确定输出到浏览器是什么编码(这是你的输出),其次要确定你的输入和函数入口的编码,例如你文件是gbk,那么你要告诉转换函数说,我给你的内容是gbk编码(htmlentities用gb2312),然后告诉函数转换的时候要按照gbk规则转换,接着你将内容反编码回来,你要告诉反编码函数,我给你的是gbk规则转换的内容,你还要按照gbk的规则转出,接着你拿到按照gbk反编码过的内容然后你向浏览器输出的时候也要按照gbk输出,如果有一个环节不是相同的编码,你不是相当于鸡同鸭讲 感谢你,你说的很多。但我只想请你,如果愿意的话,帮我证实下面代码运行结果:<?php$s=htmlentities('»',ENT_COMPAT,'utf-8');echo $s;$s=html_entity_decode('»',ENT_COMPAT,'utf-8');echo $s;$s=html_entity_decode('»',ENT_COMPAT,'utf-8');echo $s;exit();?>你看到了特殊的字符“禄”还是别的,还是就“»”?我告诉你,这段代码在php5.3.2里没问题。在php5.2.13里有问题。不知道这样能不能证实是bug? 应该还是楼上说的那回事,没有指明显示编码,被浏览器欺骗了。header('Content-Type:text/html;charset=utf-8'); <?phpheader("Content-type: text/html;charset=utf-8");$s=htmlentities('»',ENT_COMPAT,'utf-8');echo $s;$s=html_entity_decode('»',ENT_COMPAT,'utf-8');echo $s;$s=html_entity_decode('»',ENT_COMPAT,'utf-8');echo $s;exit();这段代码在 5.3.2 和 5.2.8都没有问题<?php ##charset = ISO8859-1header("Content-type: text/html;charset=ISO8859-1");$s=htmlentities(chr(187));echo $s, "<br>\n";$s=html_entity_decode('»');echo $s, ' bin data is: ' . str2bin($s), "<br>\n";$s=html_entity_decode('»');echo $s, ' bin data is: ' . str2bin($s), "<br>\n";##charset = Utf-8$s=htmlentities(chr(194).chr(187), ENT_COMPAT, 'utf-8');echo $s, "<br>\n";$s=html_entity_decode('»', ENT_COMPAT, 'utf-8');echo $s, ' bin data is: ' . str2bin($s), "<br>\n";$s=html_entity_decode('»', ENT_COMPAT, 'utf-8');echo $s, ' bin data is: ' . str2bin($s), "<br>\n";function str2bin($s) { $l = strlen($s); $r = ''; for($i = 0; $i < $l; $i++) { //echo ord($s{$i}); $r .= decbin(ord($s{$i})) . ', '; } return $r;}另外给你一个测试是不是bug的代码,我这里5.2.8和5.3.2都没有问题 求mysql大神解决啊 关于删除和添加? 请教一个关于页面值传递的问题? Cannot modify header information - headers already sent 错误是什么问题啊? 问一个很基础的问题,请问如何访问一个类当中的方法下的一个值 用PHP Simple HTML DOM Parser解析HTML 对php版的faq分类的想法 求一个正则 连接SQL2000?? 求一段删除时根据条件做出不同处理的代码 大家好,有谁会使用zend的条件断点啊 unpack()能否解析2进制数据中的数组
//or UTF-8
$s=htmlentities("»", ENT_COMPAT, 'GB2312 ');
$s=html_entity_decode($s, ENT_COMPAT, 'GB2312 ');
echo $s;exit();用的时候出问题,先看手册是怎么说的,然后再判断是否bug
$s=htmlentities('»',ENT_COMPAT,'utf-8');
echo $s;
$s=html_entity_decode('»',ENT_COMPAT,'utf-8');
echo $s;
$s=html_entity_decode('»',ENT_COMPAT,'utf-8');
echo $s;
exit();
?>你看到了特殊的字符“禄”还是别的,还是就“»”?我告诉你,这段代码在php5.3.2里没问题。在php5.2.13里有问题。不知道这样能不能证实是bug?
header("Content-type: text/html;charset=utf-8");
$s=htmlentities('»',ENT_COMPAT,'utf-8');
echo $s;
$s=html_entity_decode('»',ENT_COMPAT,'utf-8');
echo $s;
$s=html_entity_decode('»',ENT_COMPAT,'utf-8');
echo $s;
exit();这段代码在 5.3.2 和 5.2.8都没有问题
<?php
##charset = ISO8859-1header("Content-type: text/html;charset=ISO8859-1");$s=htmlentities(chr(187));
echo $s, "<br>\n";$s=html_entity_decode('»');
echo $s, ' bin data is: ' . str2bin($s), "<br>\n";
$s=html_entity_decode('»');
echo $s, ' bin data is: ' . str2bin($s), "<br>\n";##charset = Utf-8$s=htmlentities(chr(194).chr(187), ENT_COMPAT, 'utf-8');
echo $s, "<br>\n";$s=html_entity_decode('»', ENT_COMPAT, 'utf-8');
echo $s, ' bin data is: ' . str2bin($s), "<br>\n";$s=html_entity_decode('»', ENT_COMPAT, 'utf-8');
echo $s, ' bin data is: ' . str2bin($s), "<br>\n";
function str2bin($s) {
$l = strlen($s);
$r = '';
for($i = 0; $i < $l; $i++) {
//echo ord($s{$i});
$r .= decbin(ord($s{$i})) . ', ';
}
return $r;
}另外给你一个测试是不是bug的代码,我这里5.2.8和5.3.2都没有问题