在html页面中通过url链接传递中文参数到php页面处理,传递3个汉字会出现乱码问题,传递2个汉字就不会出现问题。
代码如下:
<a href="aaa.php?region=四川省">aaa</a> 链接到aaa.php中处理时就有乱码问题
<a href="aaa.php?region=四川">aaa</a> 链接到aaa.php中处理时就不会乱码问题但是我现在想要解决传3个汉字的乱码问题,请教php高手帮帮忙。

解决方案 »

  1.   

    高手您好,我用的是html页面,不能使用php的函数,最先我试过,不行。不知道还有没有其他办法?谢谢
      

  2.   

    你用的是什么服务器?
    APACHE,PHP的配置文件里有设置URL的编码的
      

  3.   

    我用的是apache服务器,php配置文件如何配置?
      

  4.   

    <?php$url = 'aaa.php?region='.urldecode("四川省");
    ?>
    <a href="<?php echo $url;?>">aaa </a>
    这种方法也可以啊
      

  5.   

    htm文件中不能执行php的代码喔?我的页面是html扩展名的。
      

  6.   

    就是不能把htm改为php,因为那个htm文件是个模板文件,改了就不能用了。
      

  7.   


    既然是模板就更简单啦:<?php $url = 'aaa.php?region='.urldecode("四川省"); 
    $tpl->assign('url',$url);
    ?> 模板:
    <a href="<!--{$url}-->">aaa </a>模板的标签改成自己的 
      

  8.   

    在htm页面中通过<a href="aaa.php?region=四川省">aaa </a>链接传递中文参数到php文件处理,传递3个汉字会出现乱码问题,传递2个汉字就不会出现问题。 
    代码和下面一样,如下: 
    <tr>
    <td>
    <a href="aaa.php?region=四川省">aaa </a> </td>链接到aaa.php中处理时就有乱码问题 <a href="aaa.php?region=四川">aaa </a> 链接到aaa.php中处理时就不会乱码问题 
    在地址栏还是这样的,http://localhost/aaa.php?region=四川省 ,但是当提交到PHP文件用echo输出的时候就是“四川眩”了,两个字的就不会,我是在htm 页面中一个链接,好像用不了.urldecode ,各位大侠请在我的代码上修改好吗?在次感谢了!
      

  9.   

    用JS里面的转码函数function zm(url){
    return encodeURI(url);}
    <a href="javascript:zm('aaa.php?region=四川省')">aaa </a> 
      

  10.   

    我个人认为是你的数据库编码、html页面编码的字符集设置有问题。我之所以问四个字以上有没有问题,是因为我以前曾经碰到过类似的问题:某些特定的汉字组合经过HTTP传递时却是会有问题。所以需要你多多测试一下。另外,到了14L你才告诉大家说,你的数据其实是来自数据库的……这么重要的信息怎么可以一直不说呢?数据库中该字段的长度是不是足够放三个汉字?
      

  11.   

    另外,顺便把aaa.php文件列点代码大家看看。
      

  12.   

    TR 数据库里的字段是可以放三个字以上的,我给的是50个字符,我也是才学习PHP的,所以有些东西还不是很清楚,
    我可以把代码贴出来 ,你帮我看一看,到底应该怎么弄,我也用了上面的朋友说的用js来做,但是提交就报错了,我把代码拿出来,请您帮我看一下,这个是htm的代码:
    <tr>
    <script language="javascript">
    function zm(url){
    return encodeURI(url);
    }
    </script>
    <td><a href="javascript:zm('searchmember.php?region=$location & city=$location1 & search=city')">{lang same_city}</a></td>
    <td><a href="searchmember.php?birth=$bday&search=babyage">{lang same_age_baby}$index[keywords]</a></td>
    <td><a href="searchmember.php?birth=$bday&search=mathersame">{lang same_mather}</a></td>
    <td><a href="searchmember.php?region=$location&city=$location1&street=$location2&search=street">{lang same_city_street}</a></td>
    </tr>pHP文件的代码:这里是取传入的值
    if(!empty($region)){$_SESSION['srchtj1']=$region;}
    if(!empty($city)){$_SESSION['srchtj2']=$city;}
    if(!empty($street)){$_SESSION['srchtj3']=$street;}
    if(!empty($search)){$_SESSION['searchtj']=$search;}
    if(!empty($bday)){$_SESSION['mather']=$bday;}
    if(!empty($year)){$_SESSION['birth']=$year;}
    我也在学习阶段,一边学一边做这个,
      

  13.   

    这个问题依然还是没有解决?我使用了<?php $url = 'aaa.php?region='.urldecode("四川省"); 
    $tpl->assign('url',$url); 
    ?> 模板: 
    <a href=" <!--{$url}-->">aaa </a> 这种方式还是乱码,请高手帮帮忙,解决一下.我是新手学习php.
      

  14.   

      你的php和数据库是用什么编码?你把你的html改成相应的编码!
      

  15.   

    有这种情况,现在utf-8编码下一个汉字好像占三个字符,这就在有时出现问题
      

  16.   

    把"四川省"转成BASE64。
    <? php
    $test="四川省";
    $test1=base64_encode($test);
    echo '<a href="aaa.php?region=$test1">aaa </a>';
    ?>另一页面使用base64_decode解开 base64_decode($region);
      

  17.   

    那静态页面怎么生成的呢?
    也应该是用PHP程序生成的吧?在生成的时候就urlencode()一下。
    否则就用英文参数代替。
    中文传参很容易出问题
      

  18.   

    三个字出错.你就加一个字啊,在那边把那个字减去就可以了,参数太多,用_连起来作为一个参数。
    <a href="aaa.php?region='四川省_成都市'">在php处理页面 list($t1,$t2) = split ('[_]', $pram);这就不多出问题啦。。
    有时候要变通,不要死死抓做一个问题不放。
      

  19.   

    应该是urlencode,上面一直错了20多楼
      

  20.   

    var urls=index.php?name=encodeURIComponent("中文")
    location.href=urls;index.php页面:
    echo $_GET["name"];------------------------------------------------------
    给分,谢谢!
      

  21.   


    好像应该是 urlencode吧 然后再urldecode
      

  22.   

    $region = iconv('gb2312','utf-8',$_GET['region']);utf-8可以根据实际情况转换
      

  23.   

    <?php  $url = 'aaa.php?region='.urldecode("四川省");  
    $tpl->assign('url',$url);  
    ?>  模板:  
    <a href=" <!--{$url}-->">aaa </a>  
    //urlencode应该是这个$url = 'aaa.php?region='.urlencode("四川省"); 
      

  24.   

    html中提交汉字想不出现乱码的话,你得用form ,以 application/x-www-form-urlencoded 编码方式提交。<form id="form1" action="aaa.php" method="get" name="form1" enctype="application/x-www-form-urlencoded" target="_self"> 
    <input type="text" name="region" size="24" value="四川省"/><button name="submit" type="submit">提交</button>
            </form>
      

  25.   

    数据库用utf-8 传给html以前处理一次编码 到html统一使用gbk2312的编码 sina baidu都这么做的
      

  26.   

    用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下用urldecode()编码下
      

  27.   

    其实大家都没弄明白LZ 要的是什么?
    楼主想扩展名为.html 中把中文传递到php 里面。两中可行的方法
    1:在生成模板的时候,直接把name转换为urlencode 然后再跳转的php里面用urldecode解码。
    2:就是这种在.html页面中进行转换
    var urls=index.php?name=encodeURIComponent("中文")location.href=urls;index.php页面:
    echo $_GET["name"];
      

  28.   

    嗯,iconv也不是万能的哈,呵呵
      

  29.   

    不明白你为啥非要把中文放到链接中作参数,这样的话你把值传到后台处理,在数据库中select...where **="中文",如果编码有问题,你这里查询数据还是会出问题的!建议把参数改为英文,用户能看到的前台信息用中文来显示就可以了!