为了账号安全,请及时绑定邮箱和手机立即绑定

请问php自动跳转传值乱码,该怎么解决?

请问php自动跳转传值乱码,该怎么解决?

PHP C
德玛西亚99 2022-03-16 15:11:17
//接值$zzwm = $_POST['zzwm'];//自动跳转Header("Location: hello.php?zzwm=$zzwm");hello页面是$zzwm = $_GET['zzwm'];但是问题来了··如果我传的是单数的汉字的话在hello页面接到的就是乱码如果用双数个汉字的话接到的就是正常我写的汉字··但是不管单数个汉字还是双数个 地址栏里始终都是乱码 这个不重要·关键就是为什么单数个汉字接到的就是乱码呢··我用的都是UTF-8··都是乱码的话我都能忍了··请高手解答我的是在页1有个Form表单··实现查询功能·里面有2个字段·输入字段1跳到页2·输入字段2跳到页3·所以我的这个Form表单向当页提交·判断是输入了哪个字段之后(两个都输入按字段1跳)在实行自动跳转+传值·下个页面接受值 进行查询·显示· 就这个逻辑·如果我在Form表单里填写的汉字字数是奇数的话 到下个页面就是乱码 如果表单里填的汉字字数是偶数的话 到下个页面就能正常使用· 但地址栏不管传多少字都是乱码··郁闷·我的自动跳转用的是 Header("Location: hello.php?zzwm=$zzwm");
查看完整描述

4 回答

?
largeQ

TA贡献2039条经验 获得超8个赞

路径不能直接传递汉字
传递汉字前先转换:
$zzwm = htmlentities(urldecode($_POST['zzwm']));
受到汉字信息,把信息编码
$zzwm = urlencode($_GET['zzwm']);
你也可以用js处理跳转
试一下这样吧

查看完整回答
反对 回复 2022-03-22
?
九州编程

TA贡献1785条经验 获得超4个赞

是你的设计就有问题

首先说为什么传递参数中不能有中文
因为你做的程序可能会在任何服务器上运行,有些服务器可能是没有中文支持,也没有UTF-8支持,你的程序会根本无法运行。
就如同网址不能用中文一样。你只能把首页命名为index.php而不能命名为“首页.php”一个道理

其次说一下如何解决
据我判断,你的hello.php是为了告诉用户一些信息,比如发布成功,添加失败等。你需要提炼出所有的中问提示,放在一个公共数组中,例如:
$messages = array(
'sendok' => '发布成功',
'addok' => '添加成功‘,
)

这样,你传递参数只需要传递sendok,然后在显示的时候显示$messages[$_GET['zzwm']],就可以了。
这样也有利于你的程序翻译成多国语言,只需要替换你存放$messages的数组的文件即可。


查看完整回答
反对 回复 2022-03-22
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

function covertToUTF8($val)
{
if(empty($val) || !function_exists('mb_convert_encoding'))
return false;
if(is_array($val))
{
foreach($val as &$v)
{
$v = covertToUTF8($v);
}
}
else
{
$val = mb_convert_encoding($val, 'UTF-8', 'GBK');
}
return $val;
}

$_GET = covertToUTF8($_GET);
var_export($_GET);

在调用GET前作用
如果还是一样,那就不是编码问题,可能你截取了汉字的一部分。



查看完整回答
反对 回复 2022-03-22
?
aluckdog

TA贡献1847条经验 获得超7个赞

一、用HTTP头信息(Header函数)

也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxxx/xxxx"),页面的属性("No cache", "Expire")等等。
用HTTP头信息使Php自动跳转到另外一个页面的方法如下:
<?php
$url = czbin.php
Header("HTTP/1.1 303 See Other");
Header("Location: $url");
exit;
?>
注意一下,"Localtion:"后面有一个空格。

二、利用HTML标记(META中的REFRESH属性)

用HTML标记,就是用META的REFRESH标记,举例如下:
<?php $url = czbin.php;?>
<HTML>
<HEAD>
<META HTTP-EQUIV="REFRESH" CONTENT="10; URL=<? echo $url;?>>
</HEAD>
<BODY>
</BODY>
</HTML>

注:这里的CONTENT="10 的意思是说10秒以后跳转。

三、用JAVASCRIPT脚本来实现

举例如下:
<?php
$url=czbin.php;
echo "<!--<SCRIPT LANGUAGE="JavaScript">";
echo "location.href='$url'";
echo "</SCRIPT>-->";
?>



查看完整回答
反对 回复 2022-03-22
  • 4 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号