编码转换求助! %E5%93%88%E5%93%88如何把这个编码还原成中文啊?原文是:哈哈! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把页面有编码改成<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />或<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />看一下行不行 不好意思,我不没有做网站开发,是这样的,比如:我有一个表单,我输入了中文,在进行提示交时,自动进行编码,有点像是在baidu里输入中文进行搜索一样,转换了,我现在需要进行还原。不知道php有没有这样的函数。 function GetGB2312String($name) { $tostr = ""; for($i=0;$i<strlen($name);$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<strlen($str);$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); } 楼上的,不对吧。echo GetGB2312String("%E5%BC%A0%E5%BC%BA");不能还原成汉字啊。 <?phpecho urldecode("%E5%93%88%E5%93%88"); echo "<br>";echo rawurldecode("%E5%93%88%E5%93%88");?>你再看一下 //转成unicode就可以忽略文件编码了$str = '%E5%93%88%E5%93%88'; echo preg_replace('/((%[a-eA-E0-9]{2}){3})/e',"foo('\\1')",$str);function foo($encode){ //3字节utf8转unicode.... $str = ''; $v = explode('%',ltrim($encode,'%')); $b = ((hexdec($v[0]) & 0x1f) << 12 ) + ((hexdec($v[1]) & 0x3f) << 6) + ((hexdec($v[2]) & 0x3f)); $str.= '&#'.$b; return $str;} 很有可能是你设meta的编码和我们设的不一样,你看一下的几组代码吧,如果还不行,我也帮不了你了<script>document.write(escape("哈哈")+"<br>");document.write(unescape("%u54C8%u54C8")+"<br>");document.write(encodeURIComponent("哈哈")+"<br>");document.write(decodeURIComponent("%E5%93%88%E5%93%88")+"<br>");</script><?phpecho urldecode("%E5%93%88%E5%93%88"); echo "<br>";echo rawurldecode("%E5%93%88%E5%93%88");echo "<br />";echo utf8_decode("%E5%93%88%E5%93%88");?> 比如URL发送一个get数据,如aa.php?str=%20%B1%E0%C2%EB%CE%CA%CC%E2在get回来之后php是不会变加中文的请问如何把他变为中文呢 你为什么不用post来传送数据,那样就不会有数据转换的问题了 我是准备用wap编程,遇到这个问题的,原型代码:<?php header("Content-Type: text/vnd.wap.wml;charset=gb2312");echo '<?xml version="1.0" encoding="GB2312"?>';echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';?><wml><card id="main" title="PHP Web"><p>GET提交,结果:<?php echo iconv("utf-8", "gb2312",$_GET["name"]); ?><br/><?php echo rawurldecode($_GET["name"]);?><br/><?php echo urldecode($_GET["name"]);?><br/>POST提交,结果:<?php echo iconv("utf-8", "gb2312",urldecode($_POST["name"])); ?><br/><?php echo iconv("utf-8", "gb2312",addslashes(urldecode($_POST['name']))); ?><br/><input name="name" emptyok="false" tabindex="2" format="*m"/><a href="testgb.php?name=$(name:e)">提交aaa</a><br/><anchor>提交anchor<go href="testgb.php" method="post"><postfield name="name" value="$(name:e)" /></go></anchor><br/></p></card></wml> 请问在html静态页中应该怎么办 呢?我的%C7%EB%CA%E4%C8%EB%CB%D1%CB%F7%C4%DA%C8%DD 中文意思是请“输入搜索内容” 但是就是不知道怎么转换 pcntl_exec()执行命令求解 关于PHP中require_once和获取目标文件目录的问题 php后缀名隐藏? ZF中,_redirect()方法是否只能用在内容输出前? 从零开始建网站 大量页面大访问量的计数器如何尽可能少的占用资源? Smarty怎样调用一个PHP函数? 请教上传附件怎么做??在线等待!! 我所知道的一个人,那可能是真正的高手吧 PHP如何修改数据? 新手入门,高手指点! Session
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />或
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />看一下行不行
是这样的,比如:我有一个表单,我输入了中文,在进行提示交时,自动进行编码,有点像是在baidu里输入中文进行搜索一样,转换了,我现在需要进行还原。不知道php有没有这样的函数。
{
$tostr = "";
for($i=0;$i<strlen($name);$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<strlen($str);$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);
}
echo GetGB2312String("%E5%BC%A0%E5%BC%BA");不能还原成汉字啊。
echo urldecode("%E5%93%88%E5%93%88");
echo "<br>";
echo rawurldecode("%E5%93%88%E5%93%88");
?>
你再看一下
$str = '%E5%93%88%E5%93%88';
echo preg_replace('/((%[a-eA-E0-9]{2}){3})/e',"foo('\\1')",$str);
function foo($encode)
{
//3字节utf8转unicode....
$str = '';
$v = explode('%',ltrim($encode,'%'));
$b = ((hexdec($v[0]) & 0x1f) << 12 )
+ ((hexdec($v[1]) & 0x3f) << 6)
+ ((hexdec($v[2]) & 0x3f));
$str.= '&#'.$b;
return $str;
}
document.write(escape("哈哈")+"<br>");
document.write(unescape("%u54C8%u54C8")+"<br>");
document.write(encodeURIComponent("哈哈")+"<br>");
document.write(decodeURIComponent("%E5%93%88%E5%93%88")+"<br>");
</script>
<?php
echo urldecode("%E5%93%88%E5%93%88");
echo "<br>";
echo rawurldecode("%E5%93%88%E5%93%88");
echo "<br />";
echo utf8_decode("%E5%93%88%E5%93%88");
?>
aa.php?str=%20%B1%E0%C2%EB%CE%CA%CC%E2
在get回来之后
php是不会变加中文的
请问如何把他变为中文呢
header("Content-Type: text/vnd.wap.wml;charset=gb2312");
echo '<?xml version="1.0" encoding="GB2312"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
?>
<wml>
<card id="main" title="PHP Web">
<p>
GET提交,结果:
<?php echo iconv("utf-8", "gb2312",$_GET["name"]); ?><br/>
<?php echo rawurldecode($_GET["name"]);?><br/>
<?php echo urldecode($_GET["name"]);?><br/>
POST提交,结果:
<?php echo iconv("utf-8", "gb2312",urldecode($_POST["name"])); ?><br/><?php echo iconv("utf-8", "gb2312",addslashes(urldecode($_POST['name']))); ?><br/>
<input name="name" emptyok="false" tabindex="2" format="*m"/>
<a href="testgb.php?name=$(name:e)">提交aaa</a><br/>
<anchor>提交anchor
<go href="testgb.php" method="post">
<postfield name="name" value="$(name:e)" />
</go>
</anchor><br/>
</p>
</card>
</wml>