解决Tomcat出现中文乱码问题
2012-09-18 11:34
281 查看
如果使用的是Tomcat服务器,在提交过程中,如果提交内容中含有中文,经常会出现中文乱码问题,下面从两个方面解决该问题。
一:中文无法显示
有些JSP中,中文根本无法显示,这种情况下,通常的原因是,没有把文件头上的字符集设置为中文字符集,一定要保证头文件上写明:
<%@ page contentType="text/html;charset=gb2312" %> or <%@ page pageEncoding="gb2312" %>
(其中字符集可以为 "GBK" , "GB2312" , "UTF-8" ,"GB18030")
二:提交过程中显示乱码
在表单提交过程中,如果含有中文字符串,服务器默认将其认为ISO-8859-1编码,而网页上显示GB2312,不能兼容。有三种解决办法。
(1)
此方法缺点是必须对每一个字符串进行转码,很麻烦。
(2)
此方法缺点是必须对每个页面进行request的设置,也很麻烦。
(3)
利用过滤器。
自定义类实现javax.servlet.Filter接口
在web.xml中
*代表拦截所有的请求
一:中文无法显示
有些JSP中,中文根本无法显示,这种情况下,通常的原因是,没有把文件头上的字符集设置为中文字符集,一定要保证头文件上写明:
<%@ page contentType="text/html;charset=gb2312" %> or <%@ page pageEncoding="gb2312" %>
(其中字符集可以为 "GBK" , "GB2312" , "UTF-8" ,"GB18030")
二:提交过程中显示乱码
在表单提交过程中,如果含有中文字符串,服务器默认将其认为ISO-8859-1编码,而网页上显示GB2312,不能兼容。有三种解决办法。
(1)
... <% String stu_name = request.getParameter("stuname"); //假设表单中有一个名为stuname的文本输入框 stu_name = new String(stu_name.getBytes("ISO-8859-1"),"GB2312"); ... %> ...
此方法缺点是必须对每一个字符串进行转码,很麻烦。
(2)
... <% request.setCharacterEncoding("GB2312"); //该方法必须在取值之前设置 String stuname = request.getParameter("stuname"); ... %> ...
此方法缺点是必须对每个页面进行request的设置,也很麻烦。
(3)
利用过滤器。
自定义类实现javax.servlet.Filter接口
public class EncodingFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //将ServletRequest和ServletResponse分别强制转换成HttpServletRequest和HttpServletResponse HttpServletRequest httpRequest = (HttpServletRequest)request; HttpServletResponse httpResponse = (HttpServletResponse)response; //调用HttpServletRequest的方法setCharacterEncoding() httpRequest.setCharacterEncoding("GB2312"); //传递给下一个过滤器 chain.doFilter(httpRequest, httpResponse); } public void destroy() { } }
在web.xml中
<filter> <filter-name>encoding</filter-name> <filter-class>zjut.tsw.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
*代表拦截所有的请求
相关文章推荐
- Tomcat服务器记录日志(Logger)出现中文乱码问题解决
- 写了一个查询数据库的程序,不熟的Tomcat6。查询条件为英文时运行正常,为中文时出现乱码。后在tomcap的server.xml中加入useBodyEncodingForURI="true解决了问题
- Tomcat服务器记录日志(Logger)出现中文乱码问题解决
- 升级tomcat后出现的页面录入框中文乱码问题解决方法
- 升级tomcat后出现的页面录入框中文乱码问题解决方法
- 解决tomcat地址栏输入中文出现找不到路径,路径乱码问题
- 解决apache+tomcatserver环境中文乱码的问题
- MyEclipse 创建jsp页面出现中文乱码问题解决方法
- 解决tomcat下中文乱码问题
- 解决使用nvelocity时候template文件里面包含中文输出结果时候出现乱码的问题
- linux 下,解决tomcat服务器接收中文乱码的问题
- Java_通过PreparedStatement往MySql数据库插入中文出现'?'乱码问题解决;
- Tomcat中文乱码问题的原理和解决方法
- Tomcat中文乱码问题的原理和解决方法(全面、详细)
- ubuntu 11.04 gnome3 下的gedit无法正常显示中文,出现乱码问题解决
- 【java】怎样解决tomcat中get提交中文参数为乱码的问题
- Tomcat中文乱码问题filter解决
- tomcat 设置UTF编码 解决中文接收乱码问题
- 解决tomcat服务器内中文乱码问题
- 解决方法:ASP读取数据库中的中文数据出现乱码的问题