急啊,不改tomcat怎么解决url传中文参数问题

gaojava 2007-01-12 10:35:06
url传中文参数会出问题,不改tomcat的配置文件怎么作呢?我的myeclipse为utf-8
jsp是引用统一的页头界面也是utf-8,这都是不能改的。
我用了
String Words=request.getParameter("searchValue");
String sStr =new String(Words.getBytes("8859_1"),"gb2312");

String ys = new String(request.getParameter("searchValue").getBytes("ISO-8859-1"));都没用阿,url显示的是...searchValue=阿阿。
但到action里就是乱码,页面也是
...全文
1010 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzb112 2011-04-23
  • 打赏
  • 举报
回复
0.0还是没找到答案。。。
AutumnHealth 2007-01-12
  • 打赏
  • 举报
回复
漏了一点,url中文参数如果有多个,用&分隔,但我在IE6里用request.getParameter()来获取第二个参数时出错,它会把除第一个参数外所有的都当成第二个参数;在Firefox和Opera里都没问题。
AutumnHealth 2007-01-12
  • 打赏
  • 举报
回复
tomcat里的url中文参数问题一定要设置tomcat的server.xml文件
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding="UTF-8"
完整的应如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
2)重启tomcat,就OK了。
执行如下jsp页页测试是否成功
tcnchar.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*"%>
<%
String q=request.getParameter("q");
q = q == null? "没有值" : q;
%>
<HTML>
<HEAD><TITLE>URL Test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META http-equiv=pragma content=no-cache>
<body>
你提交了:
<%=q%>
<br>
<form action="tcnchar.jsp" method="post">
输入中文:<input type="text" name="q"><input type="submit" value="确定">
<br>
<a href="tcnchar.jsp?q=中国">通过get方式提交</a>
</form>
</BODY></HTML>

上面代码中的post方式可以通过Filter来处理
/**EncodingFilter.java*/
public class EncodingFilter implements Filter {
protected FilterConfig filterConfig;
private String targetEncoding = "UTF-8";


public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
this.targetEncoding = config.getInitParameter("encoding");
}

public void doFilter(
ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
request.setCharacterEncoding(targetEncoding);
filterChain.doFilter(servletRequest, servletResponse);
}

public void destroy() {
this.filterConfig = null;
}
}

/**web.xml*/
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!
mayabin 2007-01-12
  • 打赏
  • 举报
回复
如果不对tomcat本身做设置,就得在页面上转码,
micalorsoftware()说的方法就行。
String Words=request.getParameter("searchValue");
String sStr =new String(Words.getBytes("8859_1"),"utf-8");

这个是把8859-1转成了utf-8
Daem0n 2007-01-12
  • 打赏
  • 举报
回复
要先对url中的中文转码,<A HREF="xxx.jsp?searchValue=<%=java.net.URLEncoder.encode(name,"utf-8")%>">这样,行不?
ideawu 2007-01-12
  • 打赏
  • 举报
回复
在tomcat中使用jsp, 设置<%request.setCharacterEncoding("utf-8");%>对URL传递的中文是没有用的, 但是对POST有用. 最好是在server.xml中设置URIEncoding.

还有, 楼主, 你既然已经使用UTF-8了, 为什么还转码GB2312? -- String sStr =new String(Words.getBytes("8859_1"),"gb2312"); 你别告诉我你是故意的吧.
yifuzhiming 2007-01-12
  • 打赏
  • 举报
回复
你就不能不传中文参数吗?
aimer311 2007-01-12
  • 打赏
  • 举报
回复
这样单纯的转码会出现奇数个字会出现乱码,而偶数不会的 情况。还需要对传递的参数进行处理再转码。查下百度和以前的帖子有这方面的介绍。
yzh963 2007-01-12
  • 打赏
  • 举报
回复
用native2ascii转码试试
url显示的是...searchValue=\u963f\u963f
Daem0n 2007-01-12
  • 打赏
  • 举报
回复
加过滤器可以解决的
believefym 2007-01-12
  • 打赏
  • 举报
回复
<%request.setCharacterEncoding("utf-8");%>
<%=request.getParameter("text1") %>
xingyue2003 2007-01-12
  • 打赏
  • 举报
回复
这些是不管用的,你应该在js提交之前,用js把url中的中文转码。
micalorsoftware 2007-01-12
  • 打赏
  • 举报
回复
既然你页面用的是utf-8那你就应该统一转成utf-8编码
String Words=request.getParameter("searchValue");
String sStr =new String(Words.getBytes("8859_1"),"utf-8");

或者request.setCharacterEncoding("utf-8");
believefym 2007-01-12
  • 打赏
  • 举报
回复
加这个呢request.setCharacterEncoding("gb2312");
lvkai0452 2007-01-12
  • 打赏
  • 举报
回复
你写一个过滤器试试呢
anson2003 2007-01-12
  • 打赏
  • 举报
回复
神啊,用javascript的encodeURIComponent试试

81,092

社区成员

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

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