UTF8编码环境下通过URL传递中文乱码问题

bigraywolf 2007-09-06 11:36:44

例:http://www.utf.com/get.jsp?varName=记录集&type=3
结果在后台取到的指为:
varName="记录?type=3"; type=null;

备注:传某些中文不报错,如:
http://www.utf.com/get.jsp?varName=记录集&type=3
得到的值:varName="记录"; type=3;

环境:jdk1.5 + tomcat5.5(已指定URIEncoding=UTF-8) + windowsxp

请高手指点。
...全文
620 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
applepop 2007-09-06
  • 打赏
  • 举报
回复
可以在web.xml中加上<filter></filter> 你上网查查
  • 打赏
  • 举报
回复
IE 问题,奇数个 UTF-8 字符会出错,偶数个就不会了。

需要对字符进行 URL 编码,需要使用 URLEncoder.encode("记录集", "utf-8"); 但是这样不支持 EL,可以采用 JSTL,便于支持 EL,当前页面的编码设为 UTF-8。

<c:url value="http://www.utf.com/get.jsp" var="redirect">
  <c:param name="varName" value="记录集"/>
  <c:param name="type" value="3"/>
</c:url>
<a href="${redirect}" >XXXX</a>

后台采用 URLDecoder.decode 进行解码。
unrain 2007-09-06
  • 打赏
  • 举报
回复
在service方法或者其他从service引申出来的方法中对request进行操作之前加入
request().setCharacterEncoding("utf-8");
或者这样读取变量
String xxxx = new String(request.getparams("XXXX").getByte("ISO-8859-1"),"utf-8")
flyforlove 2007-09-06
  • 打赏
  • 举报
回复
客户端对url中的中文编码并不一致,一劳永逸的方法是,手动对其进行编码。
zhchg6666 2007-09-06
  • 打赏
  • 举报
回复
up
xlyyc 2007-09-06
  • 打赏
  • 举报
回复
qingyuan18(zealot_tang)和bao110908(火龙果)正解
  • 打赏
  • 举报
回复
试试 JavaScript encodeURI 函数
qingyuan18 2007-09-06
  • 打赏
  • 举报
回复
Tomcat中的Connector配置,加入URIEncoding="UTF-8"

注意URIEncoding需要和你系统发送HTTP请求时的编码方式一致,比如你的浏览器配置为”总是以UTF-8发送请求”,则肯定以UTF-8编码方式发送的

一般浏览器应该是以ISO-8859-1编码方式发送的,这个时候配不配URIEncoding="UTF-8"都没关系,因为UTF-8的底层编码就是8859-1

bigraywolf 2007-09-06
  • 打赏
  • 举报
回复
bao110908(好没劲~~) ( ) 信誉:100 2007-09-06 12:23:24 得分: 0


IE 问题,奇数个 UTF-8 字符会出错,偶数个就不会了。

====================================================
确实是这样的,奇数个就有问题,偶数个就ok。
但这些中文字符是前台输入的,并且需要通过openCenterWin(url, width, height)去打开,
因此采用jstl或者URLEncoder.encode(String, "utf-8")都行不通,还请赐教。

81,092

社区成员

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

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