我有一个项目需要多条件选择搜索,但url get传过去的中文值有些是乱码,有些就正常显示,能不能做个判断,如果是gbk的乱码就解码成utf-8,否则解。请问这代码该怎么写

解决方案 »

  1.   

    如果 url 是你的程序构建的,那只要遵守一个原则基本上就不会有问题了:字符都用 UTF-8 编码,然后做 urlencode()。你说的那种试探解码的方法,不到万不得已不要用,那是错上加错的办法,也许有时候貌似能碰对,但从根本上讲太不靠谱。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  2.   


    我用的都是统一的utf-8字符集,但还是有些乱码,有些正常
      

  3.   

    请仔细说一下你这个问题的上下文:谁生成的 url?怎么生成的?怎么发送的?发送给谁?
      

  4.   


    1.php?mid=载货车&s=一汽解放&l=6X2(前四后四)&x=200-300马力
    得到的url地址是这样的
    1.php?mid=%EF%BF%BD%D8%BB%EF%BF%BD%EF%BF%BD%EF%BF%BD&s=%E4%B8%80%E6%B1%BD%E8%A7%A3%E6%94%BE&l=6X2(%E5%89%8D%E5%9B%9B%E5%90%8E%E5%9B%9B)&x=200-300%E9%A9%AC%E5%8A%9B
      

  5.   

    这不是乱码,只是URL链接字符串而己
    用,可以用unicode编码进行互转
      

  6.   

    楼主能否说一下你是怎么“得到”的么?貌似你不是对一整个 url 做的转换,而是分别转换再拼接起来的。从结果看,除了“载货车”以外,其它都是对 UTF-8 编码的字节串做 urlencode() 的结果,无误。而“载货车”则好像是先经过某种错误的转码操作变成乱码后再 urlencode() 的。

    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  7.   

    您去我这一面看一下吧,我也说不清楚
    http://www.wuliuyuan.net/Index/ersche/mid/%E8%BD%BD%E8%B4%A7%E8%BD%A6/s/%E4%B8%80%E6%B1%BD%E8%A7%A3%E6%94%BE/l/6X2(%E5%89%8D%E5%9B%9B%E5%90%8E%E5%9B%9B)/x/200-300%E9%A9%AC%E5%8A%9B/?_=%E6%A0%87%E9%A2%98&__hash__=c65082d501aff736fa18449b445d6bb6
      

  8.   

    访问你提供的这个 url 肯定无助于分析问题,那只能看到你的程序的“运行结果”,而不是“源代码”,事实上网页访问还失败了 :(你提供的这个 url 跟你在 #4 楼给出的 url 又不一样,这次这个的编码是完全正确的。那么,你还有什么问题吗?难道是在处理这个 url 的程序里得到的参数字符串不正确?如果这样的话,很有可能是你在 Web Server 里配置的 url rewrite 有问题。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  9.   

    你这个 url 在 urlencode() 之前是下面这个样子,没错吧?http://www.wuliuyuan.net/Index/ersche/mid/载货车/s/一汽解放/l/6X2(前四后四)/x/200-300马力/?_=标题&__hash__=c65082d501aff736fa18449b445d6bb6
      

  10.   

    你的字符编码都乱了,是不是哪里弄错了?因为你的网页用gbk编码查看时标题显示正常
      

  11.   


    在发送时编码用urlencode()
    接收时解码用urldecode() 
      

  12.   

    试试用Notepad++,然后在格式里选utf-8,应当可以解决了。