url传递中文编码问题

半支烟z 2010-03-29 12:17:15
我在web.xml中设置了编码
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


-------------------------------------------------------------------
在*.jsp文件中

<%@ page contentType="text/html; charset=GBK" %> 设置了编码

在传递的时候
url = './sms.jspx?method=chooseuser&vendorName=啊是的';
window.location.replace(url);

跳转到另一页中

-------------------------------------
在.java文件中

@RequestMapping(params = "method=chooseuser")
public String chooseuser(ModelMap model,String vendorName,HttpServletRequest request) throws UnsupportedEncodingException {
model.addAttribute("pagecount", pagecount);
///bzy 得到要搜索的名字,
//2,3参数是我加的
String _name=request.getParameter("vendorName");
//_name=new String(_name.getBytes("ISO-8859-1"),"GBK");
String xhname=request.getParameter("xhName");
//System.out.println("测试接受过来的字符串:"+CommonHelper.fStringFromBase64(_name)+","+xhname);
System.out.println("测试接受过来的字符串:"+_name+","+xhname);
}

---------------------
使用的是Spring 2.5 mvc
这里接受过来的中文是乱码的

请问应该怎么处理呢?

...全文
1177 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2010-03-29
  • 打赏
  • 举报
回复
我的人,从根本上治理
url = './sms.jspx?method=chooseuser&vendorName=啊是的';
这里就不应该出现中文,而是应该先编码
java端可以
URLEncoder.encode("....","GBK");

js 的话,你自己去找吧,总之,穿过去的参数,就是GBK编码好的
xuhesheng 2010-03-29
  • 打赏
  • 举报
回复
在服务器
你的是tomcat么
那就在tomcat的配置文件server.xml中的
<Connection port = "8080"。。。。
那里面加入一个
URIEncoding="GBK"就好了
  • 打赏
  • 举报
回复
这问题跟 new String 产生多少个对象一样,属于 Java 版的月经帖!
bbb332 2010-03-29
  • 打赏
  • 举报
回复
url地址包含中文参数
解决办法:<%request.setCharacterEncoding("GBK");%>
bbb332 2010-03-29
  • 打赏
  • 举报
回复
场合:页面本身有中文的时候
解决办法:servlet:resp.setContentType("text/html;charset=gbk");
Jsp: <%@ page contentType="text/html;charset=gb2312"%>
注意:一定要写在PrintWriter out = resp.getWriter();之前
场合:解决get方式乱码问题:
解决办法:修改server.xml ?URIEncoding="GBK"
场合:解决post方式提交内容的乱码
解决办法:request.setCharacterEncoding("GBK");
注意:一定要写在存取第一个参数之前
不要调用response.setCharacterEncoding("GBK");
场合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文参数
解决办法:<%request.setCharacterEncoding("GBK");%>
bbb332 2010-03-29
  • 打赏
  • 举报
回复
1.最基本的在jsp页面上要把pageEncoding设置为中文,如: <%@ page language="java" pageEncoding="GBK"%>

2.对于表单的doPost()提交,也会出现中文出现乱码,可以在servlet里设置如下:request.setCharacterEncoding("GBK"),response.setCharacterEncoding("GBK"),不过此方法在每个servlet都要设置,很麻烦,建议写个过滤器设置。可以参考以下:
    public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest request_1 = (HttpServletRequest) request;
HttpServletResponse response_1 = (HttpServletResponse) response;

// 转换编码,并且加上去缓存
request_1.setCharacterEncoding("GBK");
response_1.setCharacterEncoding("GBK");
chain.doFilter(request, response);

}
3、第三种就是 如果用doGet()提交,后面跟的参数如果也是中文,这个解决方法可以在tomcat或JBoss的配置文件里面配置,以tomcat为例:
     <Connector port="8099" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
  在这里面最后加上URIEncoding="GBK".
4、ajax也会产生乱码问题,这个问题可以在tomcat的配置那里解决。

5、文件上传时文件名也会出现乱码。
可以用此方法paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));
验证码识别 2010-03-29
  • 打赏
  • 举报
回复
up


up

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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