一、第一种方法通过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 Controller 接收页面传递的中文参数出现乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
SpringMVC解决GET请求时中文乱码的问题.rar
springMVC框架遇到中文乱码的解决思路汇总,包括从配置到注解的详细描述,帮助开发人员解决spirngMVC中文乱码问题
springmvc controller
servlet和springmvc源码servlet和springmvc源码
NULL 博文链接:https://sharpspeed.iteye.com/blog/1098367
springmvc controller
SpringMVC4.0 一个Controller多个方法
springmvc controller
基于servlet3.0手写springmvc,实现了IOC和处理器映射器以及处理器映射器功能。
Spring MVC AOP通过自定义注解方式拦截Controller等实现日志管理, springMVC里做添加AOP拦截,用于捕获异常。
SpringMVC注解return参数出现乱码解决方案。
搭建SpringMVC模型,包含控制层(@Controller)、 业务逻辑层Service(@Service)、持久层(@Repository)三层注入方式。
本文给大家介绍四种方法解决springmvc 发送ajax出现中文乱码问题,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
Servlet、JSP和SpringMVC初学指南
主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下
springmvc上传文件controller,vue
主要介绍了SpringMVC post请求中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章主要介绍了SpringMVC Controller介绍及常用注解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了SpringMvc后台接收json数据中文乱码问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下