一、第一种方法通过tomcat配置和spring编码过滤器解决中文乱码
1、修改tomcat配置文件server.xml
修改tomcat下的conf/server.xml文件 找到如下代码: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 这段代码规定了Tomcat监听HTTP请求的端口号等信息。 可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。 修改完成后: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />2、spring编码过滤器,在web.xml中配置编码过滤器
<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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
二、第二种方法。使用上面的配置基本可以解决问题了。但是如果没有使用springmvc不能使用编码过滤器,可以分别request和response做处理。
servlet或者springmvc的request和response的乱码问题
1、request 使用url传递中文参数(如http get)乱码问题。
//1、type如果是中文,很可能存在中文乱码问题。因为tomcat使用iso-8859-1解析中文,这样必然导致乱码。 String type = request.getParameter(Params.TYPE); //2、对type使用utf8进行解析:将iso-88590-1编码的字符串使用utf-8进行编码 res = new String(type.getBytes("iso-8859-1"),"UTF-8");
2、response 输出中文字符串乱码
第一种方法:
//getWriter()方法将 输出编码设置成iso-8859-1,这样输出utf8编码字符串必然乱码 PrintWriter pw = response.getWriter(); //1、 //response.setCharacterEncoding("UTF-8"); //2、 response.setContentType("text/html; charset=utf-8"); pw.write(resStr); pw.flush(); pw.close(); setContentType 和 setCharacterEncoding两方法中设定characterEncoding的方法对服务器效果一致,不需要反复调用。在输出文本内容时,采用response.setContentType("text/html; charset=utf-8");似乎更为方便。
第二种方法:
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(), "UTF-8"));
总结:
1.在servlet中输出中文,如果采用PrintWriter方式,需要在调用getPrintWriter()之前调用setContentType 或者 setCharacterEncoding;采用ServletOutputStream方式,不受此限。
2.setContentType 和 setCharacterEncoding两方法中设定characterEncoding的方法对服务器效果一致,不需要反复调用。在输出文本内容时,采用response.setContentType("text/html; charset=utf-8");似乎更为方便。
3.PrintWriter自身并没有处理编码的职责,它还是应该看成一个装饰器比较好:它就是为了输出更方便而设计的,提供print、println、printf等便利方法。要设置编码的话,可以在它的底层Writer上设置:(这里以OutputStreamWriter为底层Writer),参考:
- new PrintWriter(new OutputStreamWriter(new FileOutputStream("yourfilepath"), "UTF-8"));
相关推荐
下面我们将详细介绍 SpringMVC 中解决中文乱码问题的思路和方法。 配置文件中的字符编码 在 SpringMVC 中,我们可以在 web.xml 文件中配置字符编码。例如,我们可以在 web.xml 文件中添加以下配置: ```xml ...
解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题 SpringMVC 是一个基于模型-视图-控制器(MVC)模式的Web应用程序框架,广泛应用于Java Web开发中。但是,在使用SpringMVC时,常见的一个问题是...
SpringMVC 参数收集及乱码处理 SpringMVC 框架提供了多种参数收集方式,...SpringMVC 提供了多种参数收集方式和乱码处理方式,以满足不同的应用场景需求。通过了解这些机制,我们可以更好地设计和实现 Web 应用程序。
在整个开发流程中,还需要特别注意请求参数的绑定和类型转换、请求中文乱码问题的处理、Session和Cookie的使用、Ajax异步请求的处理、文件上传功能的实现、异常处理机制以及拦截器的应用等细节。 对于文件上传,...
POST请求中文乱码可以通过在web.xml配置CharacterEncodingFilter解决,设定请求和响应的编码为UTF-8。对于GET请求,可以通过以下两种方式处理乱码: 1. 修改Tomcat配置文件,设置Connector的URIEncoding属性为"utf-8...
在 web.xml 文件中,配置了 Spring 的字符编码过滤器以确保所有请求和响应都使用 UTF-8 编码,避免乱码问题。此外,配置了 ContextLoaderListener 监听器,该监听器会在 Web 应用启动时初始化 Spring 容器,加载 ...
<servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <param-name>contextConfigLocation <param-value>/WEB-INF/springmvc-servlet....
配置前端控制器和servlet-mapping解析器是理解SpringMVC运行的基础,笔记将指导读者如何配置这些组件,以及如何使用完整的配置文件来完成SpringMVC的初始化。 笔记中的入门程序部分,会让初学者通过非注解的方式...
在这个项目"springmvc框架的文件上传 下载"中,你可能会遇到如404错误等常见问题,下面将详细介绍SpringMVC中文件上传和下载的实现及其可能遇到的问题。 **文件上传** 1. **配置**: 首先,你需要在`dispatcher-...
此外,Servlet处理请求和响应的流程相对繁琐,包括参数转换、乱码问题和表单验证等,SpringMVC则提供了便捷的解决方案。 SpringMVC框架的核心组件包括: 1. **前端控制器(DispatcherServlet)**:作为整个框架的...
POST请求中文乱码可以通过在web.xml中配置CharacterEncodingFilter来解决,设置字符编码为UTF-8。GET请求的乱码问题,可以修改Tomcat配置文件,设置URIEncoding为UTF-8,或者在代码中对参数进行重新编码,从ISO8859-...
此外,还配置了一个 `CharacterEncodingFilter` 过滤器,确保所有的请求和响应都使用 UTF-8 编码,以防止乱码问题。 接下来,在 `WEB-INF` 目录下创建 `applicationContext.xml`,这是 SpringMVC 的主要配置文件,...
- `CharacterEncodingFilter`:设置字符编码过滤器,避免乱码问题。 - `DispatcherServlet`:配置前端控制器,指定其映射的URL模式。 - `servlet-mapping`:配置DispatcherServlet的URL映射规则。 - `jsp-config...
- 字符编码问题:为避免乱码,可以设置过滤器`CharacterEncodingFilter`,确保请求和响应使用统一的字符编码。 4. **Controller到View的参数传递**: - Controller中处理业务逻辑后,通过ModelAndView对象或者...
1. **中文显示问题**:JasperReport在处理中文时可能会遇到字符乱码的情况。可以通过调整字体设置或使用特定的字体文件来解决这个问题。参考链接:[JasperReport中文显示问题]...
过滤器(Filter)是Servlet API的一部分,允许在请求被Controller处理之前或之后进行拦截和修改。在Spring MVC中,我们可以自定义过滤器实现特定功能,如登录验证、日志记录、性能监控等。 - **实现Filter接口**...
解决POST和GET请求中文乱码问题** - 对于POST请求,可以在web.xml配置CharacterEncodingFilter,设置字符编码为UTF-8: ```xml <filter-name>CharacterEncodingFilter <filter-class>org.springframework.web....