非一般的乱码,url通过get方式提交带参数乱码

懒猫的世界 2015-01-13 04:22:09
web项目,参数以get方式提交,发现汉字乱码:
环境:tomcat字符集utf8,spring设置字符集utf8,

在浏览器里直接输入测试url参数:?BRANCH_NAME=陕西省 的时候,ie浏览器传递给后台的代码是乱码的,ff,chrome正常

但是有些时候,url参数会是下面这个样子的,

BRANCH_NAME=%E9%99%95%E8%A5%BF%E7%9C%81
这个时候后台均正确了,

问题:
怎样保证系统url为 ?BRANCH_NAME=陕西省 的时候,后台获取不乱码

多谢

...全文
919 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
老聂gogogo 2015-01-19
  • 打赏
  • 举报
回复
不能用表单吗,比如用a标签时,给a标签一个单击事件,点击的时候赋值给表单,通过Post方式提交,不用更改对方的代码
忘记呼吸 2015-01-18
  • 打赏
  • 举报
回复
关注一下 不能改后台的情况确实没遇到过。。
wula0010 2015-01-15
  • 打赏
  • 举报
回复
引用 30 楼 jimmy609 的回复:
楼主的意思是,接口对方的是吧,然后他给了一个地址,你传参吗??之前对接过一些支付的接口,后台基本都是http post方式吧,前台才可能用? 这种方式的,确定用get?? 用post是不会有问题的
楼主的意思是他提供接口,别人给他传,别人传的参数还不编码,要在url里传汉字..............
  • 打赏
  • 举报
回复
URLEncoder一下那个参数。就是转成%E9%99%95%E8%A5%BF%E7%9C%81样子的
wula0010 2015-01-14
  • 打赏
  • 举报
回复
这个,是浏览器传参数的时候决定的,如果url的参数传汉字不编码,你再怎么想办法,服务器端都是乱码,所以传参数的时候一定要编码,如果传参数的url不是你的项目里的,是别人的项目里的,你修改不了,那是别人的项目有问题。 他的项目有问题,不去解决他的项目,你要在你的项目里解决,就好比他得病了,你吃什么药他的病能好呢???????????????????????
懒猫的世界 2015-01-14
  • 打赏
  • 举报
回复
现在也觉得挺悲剧的, ie浏览器的query String 是gbk编码,浏览器参数显示的是中文的时候容易出问题 原因貌似是:tomcat获取url之后后面的参数会认为他是iso8859-1编码的,然后根据自身的字符集进行转码 但是按照这个思路,

String sen = req.getParameter(ACC_NAME);
String fck2 = new String (sen.getBytes("UTF-8"),"ISO-8859-1");
String utf8s2= new String(fck2.getBytes("ISO-8859-1"),"GBK");
仍然乱,继续乱,各种乱
纳兰弦歌 2015-01-14
  • 打赏
  • 举报
回复
不能对server进行修改,这太悲剧了
咖啡加糖_ 2015-01-14
  • 打赏
  • 举报
回复
楼主的意思是,接口对方的是吧,然后他给了一个地址,你传参吗??之前对接过一些支付的接口,后台基本都是http post方式吧,前台才可能用? 这种方式的,确定用get?? 用post是不会有问题的
wula0010 2015-01-14
  • 打赏
  • 举报
回复
引用 27 楼 superzsen 的回复:
[quote=引用 25 楼 wula0010 的回复:] 这个,是浏览器传参数的时候决定的,如果url的参数传汉字不编码,你再怎么想办法,服务器端都是乱码,所以传参数的时候一定要编码,如果传参数的url不是你的项目里的,是别人的项目里的,你修改不了,那是别人的项目有问题。 他的项目有问题,不去解决他的项目,你要在你的项目里解决,就好比他得病了,你吃什么药他的病能好呢???????????????????????
哥,对方是银行那边的,我们么办法!只能尽力想办法了[/quote] 你确定对方是这样提交的么?我觉得你是搞错了,什么银行啊?他们的it水平不会这么弱吧?????
skyhitnow 2015-01-14
  • 打赏
  • 举报
回复
如果是get提交,那必须得修改server.xml。或者,你可以: 将前台提交的乱码做个hashmap; key是对应的乱码字符串;或bytearray; value是浏览器那边发送的正确汉字。
懒猫的世界 2015-01-14
  • 打赏
  • 举报
回复
引用 25 楼 wula0010 的回复:
这个,是浏览器传参数的时候决定的,如果url的参数传汉字不编码,你再怎么想办法,服务器端都是乱码,所以传参数的时候一定要编码,如果传参数的url不是你的项目里的,是别人的项目里的,你修改不了,那是别人的项目有问题。 他的项目有问题,不去解决他的项目,你要在你的项目里解决,就好比他得病了,你吃什么药他的病能好呢???????????????????????
哥,对方是银行那边的,我们么办法!只能尽力想办法了
懒猫的世界 2015-01-13
  • 打赏
  • 举报
回复
引用 21 楼 y446948434 的回复:
引用 20 楼 superzsen 的回复:


  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
      <!-- <param-value>GB2312</param-value> -->
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>



 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
[quote=引用 19 楼 y446948434 的回复:] 能看一下你spring配置文件关于乱码的配置吗
不晓得了[/quote] thank u all the same
YangSy_001 2015-01-13
  • 打赏
  • 举报
回复
引用 20 楼 superzsen 的回复:


  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
      <!-- <param-value>GB2312</param-value> -->
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>



 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
引用 19 楼 y446948434 的回复:
能看一下你spring配置文件关于乱码的配置吗
不晓得了
懒猫的世界 2015-01-13
  • 打赏
  • 举报
回复


  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
      <!-- <param-value>GB2312</param-value> -->
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>



 <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
引用 19 楼 y446948434 的回复:
能看一下你spring配置文件关于乱码的配置吗
YangSy_001 2015-01-13
  • 打赏
  • 举报
回复
能看一下你spring配置文件关于乱码的配置吗
懒猫的世界 2015-01-13
  • 打赏
  • 举报
回复
引用 15 楼 rui888 的回复:
get 方式 提交 , IE 是 gbk, ff 、chrome 是以utf-8
这个知道,问题是怎么解决!!!!!!!
懒猫的世界 2015-01-13
  • 打赏
  • 举报
回复
引用 16 楼 zqjer2 的回复:
能使用过滤器吗? 过滤器中加上 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
么用
zqjer2 2015-01-13
  • 打赏
  • 举报
回复
能使用过滤器吗? 过滤器中加上 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
tony4geek 2015-01-13
  • 打赏
  • 举报
回复
get 方式 提交 , IE 是 gbk, ff 、chrome 是以utf-8
tony4geek 2015-01-13
  • 打赏
  • 举报
回复
那么你调时 看看,到底传过去到后台 的编码是什么啊? 把tomcat 源码关联看下就明白了。。
加载更多回复(13)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧