浏览 2580 次
锁定老帖子 主题:在URL中传中文参数出现乱码解决方案
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-20
一下提供我遇到乱码问题的一个解决方案(仅供参考): (1)在所有的jsp页面做一下设置: <%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8"%> <html> <head> <title>中文问题</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </html> (2)在web.xml中加如下过滤器: org.springframework.web.filter.CharacterEncodingFilter过滤器. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <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> </init-param> </filter> (3)server.xml中不要使用 <Valve className="org.apache.catalina.valves.RequestDumperValve"/> (4) server.xml文件加上useBodyEncodingForURI="true" 这样应该可以搞定大多数前台的中文问题. <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useBodyEncodingForURI="true" disableUploadTimeout="true" /> (5)如果URL中包含中文参数要提交后台,可以用encodeURIComponent()函数进行编码。 window.location = "<%=request.getContextPath()%>/deal/toSystemDealList.action?ddlType=" + document.getElementById("ddlType").value + "&txtSelect=" + encodeURIComponent(document.getElementById("txtSelect").value) + "&proClassId=" + document.getElementById("proClassId").value; document.getElementById("txtSelect").value得到的是以下输入项的值(这个值可能是中文字符) <input name="txtSelect" id="txtSelect" type="text" /> (6)解决乱码问题还应该注意数据库的配置,下面以mysql为例进行说明: A.mysql配置文件:修改mysql在windows\my.ini里default-character-set=utf-8 B.mysql里数据库和表也都设为utf8_unicode_ci C.数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8 注意,关键就在于此:此句中间是'&'不是'&'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中需要用& 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |